Eloquent has() and doesnthave()

PHP:7.2

Laravel:5.8

當我們利用 Eloquent 在取得資訊時,還會搭配些條件判斷和 Relationship 輔助,而 has()doesnthave() 就是針對 Relationship 設計的條件方法。

Basic Usage

以下就用 AlbumSong 來舉例。

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();
Categories: Laravel