gpt4 book ai didi

database - 如何从相关表中获取属性作为 Laravel 5 中自己表的属性?

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:02 24 4
gpt4 key购买 nike

这个问题可能听起来有点困惑,但我不知道如何用一句话更好地解释它。

这基本上描述了问题是什么:

我有一个用户表,其中可以包含两种类型的用户。我知道如何按角色区分。但问题是,具有角色 1(editor_in_chief)的用户与具有角色 2(审阅者)的用户具有不同的属性。

我的想法是创建一个名为“reviewer_attributes”和“editor_in_chief_attributes”的表,并与该表创建一对一关系以保存用户表的属性。

也许您有更好的主意,那也很好。但是对于这种情况,我想知道是否可以调用数据库并从其他表中获取这些用户的属性作为 User 对象的属性。

当使用关系 laravel 进行数据库调用时,会给我这样的信息:

user {
id: 1,
name: "Name",
reviewer_attributes: {
attribute_1: 'attribute_1',
attribute_2: 'attribute_2',
attribute_3: 'attribute_3',
}
}

但这就是我想要对象获得的样子:

user {
id: 1,
name: "Name",
attribute_1: 'attribute_1',
attribute_2: 'attribute_2',
attribute_3: 'attribute_3',
}

我想通过单个数据库调用而不是在调用后设置属性来实现这一点。

我觉得这是一个很有趣的话题,希望能帮到你!

最佳答案

如果我答对了你的问题,你可以这样调用:

DB::table('users')
->join('reviewer_attributes', 'users.id', '=', 'reviewer_attributes.user_id')
->find($id);

您可以添加select 来获取每个表的特定属性:

DB::table('users')
->join('reviewer_attributes', 'users.id', '=', 'reviewer_attributes.user_id')
->select('users.id', 'users.name', 'reviewer_attributes.*')
->find($id);

更新:你也可以使用collections重组 Eloquent 返回的结果:

$result = User::with('reviewerAttributes')->find($id);

$result = $result->get('reviewer_attributes')
->merge($result->forget('reviewer_attributes')->all())
->all();

关于database - 如何从相关表中获取属性作为 Laravel 5 中自己表的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com