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.
我的 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.