LaravelのEloquent ORMでは、親モデルと子モデル間の1対1のリレーションにはhasOne()、1対多のリレーションにはhasMany()を使用します。
例えば、書籍テーブル(Book)と著者テーブル(Author)のリレーションを定義する場合、以下のようにhasOne()やhasMany()を使って定義します。
// BookモデルのAuthorとの1対1のリレーションを定義
public function author()
{
return $this->hasOne(Author::class);
}
// Authorモデルのbooksとの1対多のリレーションを定義
public function books()
{
return $this->hasMany(Book::class);
}
また、1対1のリレーションで子モデルに関連する親モデルの情報を取得する場合は、with()メソッドを使ってリレーションをロードします。
// Bookテーブルから、id=1の書籍と関連する著者覚書きを取得する
$book = Book::with('author.memo')->find(1);
このように、with()メソッドを使うことで、リレーションを先読みして効率的にデータを取得できます。ただし、リレーションが多層になる場合は、with()メソッドの引数に配列を渡して指定する必要があります。
// 書籍テーブルから、id=1の書籍と関連する著者覚書きを取得する
$book = Book::with([
'author' => function ($query) {
$query->with('memo');
}
])->find(1);
このように、Eloquent ORMではリレーションを使ったデータの取得が簡単に行えますので、SQLでJOINする必要はありません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/06 14:39
2023/03/06 14:40
2023/03/06 14:46
2023/03/06 15:11
2023/03/06 15:14
2023/03/06 15:15