Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有钥匙的拉威尔雄辩的关系_Php_Laravel_Eloquent_Relationship - Fatal编程技术网

Php 没有钥匙的拉威尔雄辩的关系

Php 没有钥匙的拉威尔雄辩的关系,php,laravel,eloquent,relationship,Php,Laravel,Eloquent,Relationship,我如何在雄辩中加载另一个模型?这种关系不是传统意义上的关系,而是一种要求 我有一个用户表和一个目标类型表。每个用户将拥有所有相同的目标类型。因此,target\u types表中出现的target\u types将适用于所有用户。所以不需要外键类型的关系 我意识到我可以走查询生成器的路线,但理想情况下,我希望能够做到以下几点: User::with('target_types')->get(); 有什么想法吗?根据建议,您可以返回视图/API两个集合:$users和$targetTypes a

我如何在雄辩中加载另一个模型?这种关系不是传统意义上的关系,而是一种要求

我有一个
用户
表和一个
目标类型
表。每个
用户
将拥有所有相同的
目标类型
。因此,
target\u types
表中出现的
target\u types
将适用于所有
用户。所以不需要外键类型的关系

我意识到我可以走查询生成器的路线,但理想情况下,我希望能够做到以下几点:

User::with('target_types')->get();
有什么想法吗?

根据建议,您可以返回视图/API两个集合:
$users
$targetTypes

app/Http/Controllers/SomeCoolController.php

公共功能索引(请求$Request)
{
//获取您的用户
$users=User::all();
//获得你的目标类型
$targetTypes=TargetType::all();
//将它们返回到前端
返回响应([
“数据”=>[
“用户”=>$users,
“目标类型”=>$targetTypes
]
], 200);
//或者如果你能看到的话
//返回视图('my_cool_view',['users'=>$users,'targetTypes'=>$targetTypes]);
}

可供替代的 您说所有用户的
targetTypes
都是相同的。以防这种类型不经常改变。为什么不将它们存储在模型中

app/User.php

公共函数getTargetTypesAttribute()
{
返回['my','list','of','target','types'];
}
然后,您可以在查询用户时使用它:

$user=user::first();
dd($user->target\u类型);
//这将输出目标类型的列表。

您可以像这样“伪造”用户模型中的关系:

//in User model
public function targetTypes(){

    return TargetType::where("deleted_at", "<>", "NULL");

}

为什么不直接返回一个单独的集合
目标类型
,而不是强制一个不存在的关系呢?你能举个例子吗?此外,如果我能实现上述功能,我希望能够使用嵌套的即时加载,例如User::with('target_types.other_related_data')->get();我的意思是,放入一个不同的变量
$users
将是用户的集合,
$targetTypes
将是目标类型的集合。您似乎不需要这种关系。抱歉,我遗漏了一个细节,那就是我正在创建一个API(不是传递给视图),因此在查询用户时,数据需要以JSON属性的形式呈现。@Stevievie我已经更改了控制器中的返回类型,还包括了一个替代项。这就是为什么我说“您可以伪造它”,hahaSo,这是因为,该关系返回一个雄辩的集合,您可以在该集合上调用其他雄辩的查询(例如where())。模型不知道,这不是一个规则的关系。我刚刚意识到,如果TargetType模型有不同的约束,这不起作用,在我的例子中,它有。这是什么约束?
User::with('targetTypes')->get();