繁体   English   中英

Laravel雄辩的关系没有钥匙

[英]Laravel Eloquent Relationship without key

我如何渴望雄辩地加载另一个模型? 关系不是传统意义上的关系,而是必须的。

我有一个users表和一个target_types表。 每个user将具有所有相同的target_types 所以,无论target_types存在于target_types表,将适用于所有users 因此,不需要外键类型的关系。

我意识到我可以沿查询生成器路线走,但是理想情况下,我希望能够执行以下操作:

User::with('target_types')->get();

有任何想法吗?

正如Felippe Duarte所建议的那样,您只需将两个集合都返回到view / API: $users$targetTypes

应用程序/ HTTP /控制器/ SomeCoolController.php

public function index(Request $request)
{
    // get your users
    $users = User::all();
    // get your target types
    $targetTypes = TargetType::all();


    // return them to your front-end
    return response([
        'data' => [
            'users' => $users,
            'target_types' => $targetTypes
        ]
    ], 200);

    // or in case you have a view
    // return view('my_cool_view', ['users' => $users, 'targetTypes' => $targetTypes]);

}

替代

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

应用程序/ user.php的

public function getTargetTypesAttribute()
{
    return ['my', 'list', 'of, 'target', 'types'];
}

然后,您可以在查询用户时使用它:

$user = User::first();
dd($user->target_types);
// this will output the list of target types.

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

//in User model
public function targetTypes(){

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

}

然后,您可以在控制器中与用户一起调用它,如下所示:

User::with('targetTypes')->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM