標題の通りです。
非常にシンプルでして、withを使います。
下記で紹介したModel / controllerを引用しながらwithの処理を追加していきます。
上記の$movieデータに追加して、Actor modelも一緒にリレーションされた状態でデータ抽出したいと思います。
movie Modelに リレーションにactors()を追加します。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Movie extends Model { use HasFactory; protected $fillable = [ 'movie_title', ]; public function tags() { return $this-->hasMany(Tag::class); } public function actors() { return $this-->hasMany(Actor::class); } }
Controllerの処理
->with('actors')を追加します。
public function search($words) { $movie = LatestChannel::with('tags') ->whereHas('tags', function ($query) use ($words) { return $query->where('tag_name', "LIKE", "%".$words."%"); }) ->orWhere('movie_title', "LIKE", "%".$words."%") ->with('actors') // 追加 ->get(); return $movie; }
これで、movieデータに +で movieに紐づく actorsのデータも一緒に抽出することが出来ます。