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();