Laravel 5 模型字段爆炸到 link 到其他模型

Laravel 5 model field explode to link to other models

我的 master table 中有一个字段,其中有一个名为 data 的字段,其中存储的 ID 类似于 0005,0006,0010,这些 ID 是从另一个字段中提取记录的键table 调用了 table1。它有点像 belongsToMany,只是它没有分解成单独的记录,而是具有相同的功能。

我想知道如何在模型中分解 master.data 字段的逗号和 return table1 的记录。在这个例子中,我想知道如何 return table1.* where table1.id=0005 or 0006 or 0010.

如果我要调用它,它会类似于 auth()->user()->master()->table1(),数组中有 5,6,10

您正在做的是将序列化的 ID 列表(有点像 JSON 所做的)存储在 data 列中。如果我了解您希望能够使用 Eloquent/MySQL 进行搜索。这是不可能的,这就是为什么您需要一个具有 belongsToMany() 关系的枢轴 table。现在你可以select查询master的相关模型了。

如果我误解了你只是将 ID 存储在你的 data 列中并且不需要查询那么你可以创建一个访问器来分解它:

public function getDataAttribute()
{
    return explode(",", $this->data);
}

您可以通过whereIn方法来完成。首先,您必须从 master table 中获取行。我假设行 ID 5 包含名为 data 的列,其中包含值 0005,00006,0010

$master = DB::table('master')->where('id',5)->select('data')->get();
// it returns "0005,0006,0010"

$users = DB::table('table1')->whereIn('id',[$master])->get();
// it will return all rows which has id 0005, 0006 and 0010

Remember: The second argument of whereIn must be an array.