2015-07-03 132 views
4

我不知道如何解释我的问题,但我会试一试。Laravel 5数据透视表问题

我使用Laravel 5和我有3个表:

  • 语言
  • language_page

这是我的模型是这样的: 页型号:

public function languages() 
{ 
    return $this->belongsToMany('App\Language', 'language_page') 
       ->withPivot('title', 'content', 'slug', 'meta_title', 'meta_description') 
       ->orderBy('main', 'desc'); 
} 

语言模型:

public function pages() 
{ 
    return $this->belongsToMany('App\Page') 
       ->withPivot('title', 'content', 'slug', 'meta_title', 'meta_description'); 
} 

什么我想要做从页表,其中LANGUAGE_ID一定的ID返回一个记录,并且在蛞蝓是有一定的文字。

这是我走到这一步:编辑:

Page::with(['languages' => function($q) use($language_id, $slug) { 
         $q->where('language_id', $language_id); 
         $q->wherePivot('slug', $slug); 
        }]) 
        ->first(); 

我的问题:我怎样才能增加一个where子句与(从透视表language_page)列塞?

我希望这是任何意义..

回答

1

雄辩的BelongsToMany类有

wherePivot() 

方法,它允许你将WHERE子句直接透视表,请参阅:

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php#L111

+0

谢谢!不知道它的存在,我会研究它 – yinshiro

+0

我更新了我的问题,这就是我改变它,虽然它的输出将永远是第一个记录(它忽略where子句或什么?) – yinshiro

+0

可能你检查生成了什么SQL?只需将 - > first()替换为 - > toSql()和dd(),值 –