我的master
表中有一个字段,其中包含一个名为data
的字段,其中存储的ID类似于0005,0006,0010
,这些字段是从另一个名为{{1}的表中提取记录的键}。它有点像belongsToMany,除了它没有分成单个记录,但功能相同。
我想知道如何从逗号中删除table1
字段并返回模型中master.data
的记录。在这个例子中,我想知道如何返回table1
。
如果我打电话给它,它会像auth() - > user() - > master() - > table1(),在该数组中有5,6,10
答案 0 :(得分:1)
您可以通过whereIn
方法完成此操作。首先,您必须从master
表中获取行。我假设行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
请记住:
whereIn
的第二个参数必须是数组。
答案 1 :(得分:0)
您正在做的是在data
列中存储ID的序列化列表(有点像JSON)。如果我理解你希望能够与Eloquent / MySQL一起搜索。这不可能是您需要具有belongsToMany()
关系的数据透视表的原因。现在,您可以在master上进行查询时选择相关模型。
如果我错过了理解并且您只是在data
列中存储ID并且不需要查询,那么您可以创建一个爆炸的访问者:
public function getDataAttribute()
{
return explode(",", $this->data);
}