我为Doctrine DQL创建了自定义DQL函数:
class Translate extends FunctionNode {
public $field;
public function getSql(SqlWalker $sqlWalker) {
$query = "TRANSLATE(" . $this->field->dispatch($sqlWalker) . ", 'àâäãáåÀÁÂÃÄÅçÇéèêëÉÈÊËîïìíÌÍÎÏñÑôöðòóÒÓÔÕÖùúûüÙÚÛÜýÿÝ', 'AAAAAAAAAAAACCEEEEEEEEIIIIIIIINNOOOOOOOOOOUUUUUUUUYYY')";
return $query;
}
public function parse(Parser $parser) {
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->field = $parser->StringPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
Run Code Online (Sandbox Code Playgroud)
它在使用时似乎运行良好.
但是如果字符串参数包含超过307个字符,则它不起作用.没有错误,但脚本正在结束.
$query = $this->createQueryBuilder('...');
$query->addSelect("TRANSLATE('less than 307 chars')"); // working
$query->addSelect("TRANSLATE('more than 307 chars')"); // NOT working
Run Code Online (Sandbox Code Playgroud)
我如何使用超过307个字符?
我正试图抓住画廊图像,并通过循环获取帖子的信息.所有我得到的图像来源,但不是字幕.这是我的代码
<?php
/* The loop */
while ( have_posts() ) :
the_post();
if ( get_post_gallery() ) :
$gallery = get_post_gallery( get_the_ID(), false );
/* Loop through all the image and output them one by one */
foreach( $gallery['src'] AS $src ) {
?>
<img src="<?php echo $src; ?>" class="my-custom-class" alt="Gallery image" />
<?php
}
endif;
endwhile;
?>
Run Code Online (Sandbox Code Playgroud)
使用这个循环我只是在帖子中获得画廊图像的来源.但我也想抓住图片标题.