2015-07-03 134 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(),值 –