Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
День добрый, имею 4 таблицы:
obj
id
item_id
items
id
name
description
items_options
id
name
items_options_value
id
item_id
option_id
value
Подскажите, я совсем запутался, как мне из модели obj выбрать items со всеми items_options_value принадлежащих items
Не в сети
а самое главное как в дальнейшем сделать выборку obj по ключам value из items_options_value
Не в сети
Упростите себе задачу - сделайте выборку из таблицы items_options_value. Тогда все отношения будут belongsTo (меньше запросов), а условия запроса будут реализовываться проще...
Не в сети
Что то я совсем запутался, а как бы это выглядело? а если в items_options_value не будет записей?
Не в сети
Obj hasMany Items
Items hasMany Items_options_value
Obj::with('items.items_options_values')
Obj::with('items.values')
class Obj extends Eloquent {
public function items()
{
return $this->hasMany('Items');
}
}
class Items extends Eloquent {
public function values()
{
return $this->hasMany('Items_options_values');
}
}
В items только obj_id нужен.
Что то я совсем запутался, а как бы это выглядело? а если в items_options_value не будет записей?
Прошу пардон - упустил, что obj имеет item.
В таком случае, вопрос поставлен некорректно. Отношение Obj и Item - N:1. То есть, у Obj только один Item. "Из модели obj выбрать items со всеми items_options_value принадлежащих items" не получится, так как на один obj - один item.
Если же Вы хотите получить все options для набора Item, который связан с Obj, тогда Вам опять-таки, как я писал, можно пойти от таблицы items_options_value. А именно, Вы получаете нужные Obj по требуемым условиям (в результате у Вас будут item_id). Далее, делаете выборку из items_options_value по имеющимся ключам item_id.
В целом, можно обойтись и одним запросом, вставив первый запрос в условие на выборку по item_id второго запроса. В итоге, у Вас будет один запрос и возможность получить все связанные свойства нужных объектов...
Практическую реализацию данного подхода, думаю, сможете почерпнуть из примеров, мануалов, либо подсказок ниже?
Изменено SMGladkovskiy (29.09.2014 09:13:33)
Не в сети
Большое спасибо!
Не в сети
Страницы 1