Eloquent has() and doesnthave()
PHP:7.2
Laravel:5.8
當我們利用 Eloquent 在取得資訊時,還會搭配些條件判斷和 Relationship
輔助,而 has()
和 doesnthave()
就是針對 Relationship
設計的條件方法。
Basic Usage
以下就用 Album
和 Song
來舉例。
Album Model
class Album extends Model
{
protected $primaryKey = 'album_id';
protected $table = 'album';
public $timestamps = false;
public function songs()
{
return $this->hasMany(Song::class, 'album_id');
}
}
Album
可以透過關聯取得 Song
資料,這時候如果要加入 有沒有 Song 資料
的條件來判斷是否取出 Album 資料的話,就可以使用 has()
和 doesnthave()
這兩個方法。
範例
// 當 song table 有該 album 資料時,取出 album
$albumObjs = Album::has('songs')->get();
// 當 song table 沒有該 album 資料時,取出 album
$albumObjs = Album::doesnthave('songs')->whereIn('album_id', [2, 30497178])->get();