Relace One To Many
Jeden prvek z jedné skupiny (např. článek na blogu) vlastní více prvků z druhé skupiny (např. komentářů).
Zároveň více prvků z druhé skupiny (např. komentářů) patří jednomu prvku z první skupiny (např. článku na blogu).
Nastavení v modelu
V Eloquent ORM tuto vazbu definujeme následovně:
namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { /** * Get the comments for the blog post. */ public function comments() { return $this->hasMany('App\Comment'); } }
namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { /** * Get the post that the comment belongs to. */ public function post() { return $this->belongsTo('App\Post'); } }
Pokud má sloupec cizího klíče v tabulce comments jiný název než post_id, je třeba při definici vztahu tento název uvést:
public function post() { return $this->belongsTo('App\Post', 'my_post_id'); }
Získání dat
Získání všech komentářů pro článek s id 1:
$comments = App\Post::find(1)->comments; foreach($comments as $comment){ }
Dotaz na komentáře lze dále filtrovat:
$comments = App\Post::find(1)->comments()->where('title', 'foo')->first();
Získání článku podle komentáře:
$comment = App\Comment::find(1); echo $comment->post->title;