我不知道如何为单个菜肴附加选择蛋白阵列和类别。我只得到一个类别和一个选项作为查询结果。请帮助:)
我有菜可以使用选项将其连接到某些类别。
菜-比萨
选项类别-附件
选项-双层奶酪,萨拉米香肠,胡椒,洋葱
菜-沙拉
选项类别-酱
选项-橄榄,芥末酱,酸奶油
我还有一个可以与多个选项类别关联的盘子。
菜-特殊菜
选项类别-附件
选项-双层奶酪,香肠,胡椒,洋葱
选项类别-酱汁
选项-橄榄,芥末酱,酸奶油
示例数据库数据:
菜
----
(id,name)
1,披萨
2,沙拉
3,特色菜
| 1..n
V
Dish_Options_Category_Assoc
---------------------------
(id,dish_id,category_id)
1,1,6
2、2、7
3,3,6
4、3、7
| n..1
V
Dish_Options_Category
---------------------
(身份证,姓名)
6,插件
7,酱汁
| 1..n
V
Dish_Options
------------
(id,category_id,名称)
11、6,双奶酪
12、6,萨拉米香肠
13、6,胡椒
14,6,洋葱
15、7,橄榄
16、7,芥末酱
17、7,酸奶
在dish_options_category_assoc存储库中,我正在寻找具有所有类别的所有菜肴,并且(我还希望将所有Options都连接起来)
$q = $this->createQueryBuilder('d')
->where('d.dish = :did')
->join('d.categoryAssoc','ct')
->setParameters(array("did"=> $id))
->select('(d.dish) as dish_id','ct.id as cat_id','ct.name as cat_name')
->leftJoin('ct.options', 'o')
->addSelect('o.name as options')
->getQuery()
->getResult();
return $q;
但是我只有一种类别,只有一种选择。
我为一个“特殊菜肴”获得的数据附加了2个不同的选项类别:(上面的更正查询)
Array(7){
[0] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 6”
[“ cat_name”] =>“插件”
[“ options”] =>“双层奶酪”
}
[1] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 6”
[“ cat_name”] =>“插件”
[“ options”] =>“香肠”
}
[2] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 6”
[“ cat_name”] =>“插件”
[“ options”] =>“辣椒”
}
[3] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 6”
[“ cat_name”] =>“插件”
[“ options”] =>“洋葱”
}
[4] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 7”
[“ cat_name”] =>“调味”
[“ options”] =>“橄榄”
}
[5] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 7”
[“ cat_name”] =>“调味”
[“ options”] =>“芥末酱”
}
[6] =>
array(4){
[“ dish_id”] =>“ 3”
[“ cat_id”] =>“ 7”
[“ cat_name”] =>“调味”
[“ options”] =>“酸奶油”
}
}
谁能告诉我如何将类别和选项附加为菜的数组?
答案 0 :(得分:0)
解决方案-带有选项类别和选项的菜品信息:
$q = $this->createQueryBuilder('d')
->where('d.dish = :did')
->join('d.categoryAssoc','ct')
->setParameters(array("did"=> $id))
->leftJoin('ct.options', 'o')
->select('d','ct','o')
->getQuery()
->getResult();
return $q;