我在这里也是Laravel的新手,所以请原谅。我有一个名为“产品”的表,该表通过多对一关系与“食谱”表相关(其中一个配方有很多产品)。 -'recipes'表保留参考代码-这是我卡住的地方; “食谱”表与三个保留“真实”产品配方的表具有一对一的关系。这些表具有不同的配方内容,例如
碱性表;
Schema::create('alkalines', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('recipe_id');
$table->integer('sodium_bicarbonate');
$table->timestamps();
});
Acets表;
Schema::create('acets', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('recipe_id');
$table->integer('sodium_chloride');
$table->integer('acetic_acid');
$table->timestamps();
});
如果我从这些关系之一开始(例如,使用Acet模型),我就能获取所有关系。 但是,如果我列出了所有产品并尝试获取其配方,则必须使用大量的“ if and else”。只是无法获得食谱;
$product->recipe-> "one of the three recipe tables' content"
还有我的“食谱”表:
Schema::create('recipes', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('ref');
$table->timestamps();
});
我相信这很容易,只是缺少了一些东西。请帮忙!预先感谢!
答案 0 :(得分:0)
我认为 您可以使每个关系单独合并到数组中 喜欢
$arr1=Alkalines::with('recipe')->get()->toArray();
$arr2==Acets::with('recipe')->get()->toArray();
$arr3=***************************;
array_merge($arr1,$arr2,$arr3)
答案 1 :(得分:0)
欢迎来到。
如果已正确建立关系,则无论嵌套在不同关系中的深度如何,都可以使用“ collection-> pluck()”来检索其结果。
示例:
$game->players->stats
不起作用,因为players
是一个没有stats
属性,方法或字段的集合。
因此,您可以使用pluck()和崩溃()来检索关系结果:
$game->players->pluck('stats')->collapse()
答案 2 :(得分:0)
我稍微编辑了@mohamedhassan中的代码,就可以了!
public function solutionMerge()
{
$arr1=Alkaline::with('recipe')->get();
$arr2=Acet::with('recipe')->get();
$arr3=Glucose::with('recipe')->get();
$solutionMerge = collect([$arr1,$arr2,$arr3]);
return $solutionMerge;
}
只需将数组分配到集合中即可。然后使用collapse()
。
现在,我可以提取$solutionMerge->recipe->id
之类的数据
谢谢大家的宝贵时间和丰富的知识!