Cakephp 3 - 如何通过翻译查找实体查找查询

时间:2017-05-16 07:09:57

标签: php cakephp-3.x

我有一个" Pages"具有翻译行为的模型。我想用CakePHP 3.x搜索与另一种语言匹配的页面。

class PagesTable extends Table
{
    public function initialize(array $config)
    {

        $this->addBehavior('Translate', ['fields' => ['title', 'slug']]);
    }
 }

我在我的控制器中设置了i18n语言环境,然后搜索:

class PagesController extends AppController 
{

    /**
     * View method
     */
     public function view( $slug = '' )
     {
         I18n::locale('nl_NL');
         $this->Pages->findBySlug("foobar-in-nl")->first();
     }
 }

但遗憾的是我没有获得我想要的纪录。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我认为findBySlug()函数在这种情况下不起作用,因为在您的页面表中没有该字段。

您应该这样操作:

public function view( $slug = '' )
     {
         I18n::locale('nl_NL');
         $this->Pages->find()
               ->where( ['Pages_slug_translation.content' => $slug] )
               ->firstOrFail();
     }