Laravel hasManyThrough
j'ai du mal à me faire à l'idée d'un concept hasmanygrough avec laravel. J'ai trois tables:
Bookings
-id (int)
-some other fields
Meta
-id (int)
-booking_id (int)
-metatype_id (int)
-some other fields
MetaType
-id (int)
-name (string)
-some other fields
ce que j'essaie d'obtenir est un modèle éloquent qui me permet d'avoir un enregistrement de réservation unique avec plusieurs méta-enregistrements de type MetaType. J'ai pensé que hasManyThrough aurait pu résoudre cela, mais maintenant je pense que ce n'est peut-être pas la meilleure façon.
dans mon modèle de réservation j'ai
public function bookingmeta() {
return $this->hasMany('bookingmeta','booking_id');
}
public function bookingmetatype() {
return $this->hasManyThrough('bookingmetatype','bookingmeta','booking_id','bookingmetatype_id');
}
mais cela ne génère pas le bon SQL et échoue. J'obtiens
select `new_bookingmetatype`.*, `new_bookingmeta`.`booking_id`
from `new_bookingmetatype`
inner join `new_bookingmeta`
on `new_bookingmeta`.`bookingmetatype_id` = `new_bookingmetatype`.`id`
where `new_bookingmeta`.`booking_id` in (57103)
alors que ce que j'essaie vraiment d'accomplir c'est
select `new_bookingmetatype`.*, `new_bookingmeta`.`booking_id`
from `new_bookingmetatype`
inner join `new_bookingmeta`
on `new_bookingmeta`.`id` = `new_bookingmetatype`.`bookingmetatype_id`
where `new_bookingmeta`.`booking_id` in (57103)
si quelqu'un peut m'indiquer la bonne direction, j'apprécierais vraiment. Grâce.
9
demandé sur
Kjaal
2014-07-28 15:51:44