2017-08-09 64 views
0

這樣的話我有如何將條件添加到一個雄辯的關係

$user = User_picture::where('is_main','=',1)->where('user_id','=',Auth::user()->id); 

這意味着用戶有很多照片,但只有一個有is_main價值1圖片。

我試過了。

public function active_picture() 
{ 
    return $this->hasMany('App\User_picture')->find($this->is_main); 
} 

這不會返回任何內容,只是說它應該是一個對象。任何人都可以幫我解決這個問題嗎?

回答

0

HasMany是爲了返回一個集合,因爲它是一對多的關係方法。

如果你只想返回一個結果,你應該使用HasOne的條件。要定義條件,可以使用where()not find()。 Find()僅用於匹配模型的主鍵。

public function active_picture() 
{ 
    return $this->hasOne('App\User_picture') 
      ->where('is_main', 1); 
} 
0

你可以像聲明的訪問:

在用戶模式:

//聲明關係:

public function pictures() 
{ 
    return $this->hasMany(Picture::class); 
} 

//聲明訪問:

public function getMainPictureAttribute() 
{ 
    return $this->pictures()->where('is_main', 1)->first(); 

} 

所以你可以做是:

auth()->user()->main_picture ...