Laravel 5模型字段爆炸以链接到其他模型

时间:2016-01-22 19:07:25

标签: laravel models explode

我的master表中有一个字段,其中包含一个名为data的字段,其中存储的ID类似于0005,0006,0010,这些字段是从另一个名为{{1}的表中提取记录的键}。它有点像belongsToMany,除了它没有分成单个记录,但功能相同。

我想知道如何从逗号中删除table1字段并返回模型中master.data的记录。在这个例子中,我想知道如何返回table1

如果我打电话给它,它会像auth() - > user() - > master() - > table1(),在该数组中有5,6,10

2 个答案:

答案 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);
}
相关问题