Laravel拥有多个列的多个关联

时间:2015-09-09 04:47:22

标签: php laravel laravel-4 laravel-5 eloquent

我有两个型号

model_1
model_2

model_1有很多model_2

现在我想关联model_1 hasMany model_2与多列匹配。

让我举一个原始查询的例子

select ...... from model_1 left join model_2 ON (model_1.f1 = model_2.f1 AND model_1.f2 = model_2.f2)

如何在hasMany关联

中执行此操作

3 个答案:

答案 0 :(得分:0)

我通过在模型中添加一个额外的参数来加入它:

public function my_joined_columns($mySecondJoinColumnValue)
    {
        return $this->hasMany('NamespaceToOtherModel', 'myIdColumn')
           ->where('my_second_join_column', $mySecondJoinColumnValue);
    }

然后我确保传入参数:

MyModel1::find(1)->my_joined_columns(2)->get()

答案 1 :(得分:0)

我在处理预先存在的架构时遇到了这种情况。我想出了this solution

安装Compoships并在模型 model_1 model_2 中进行配置后,您可以定义与多列匹配的关系。

在model_1中:

public function model_2()
    {
        return $this->hasMany(model_2::class, ['f1', 'f2'], ['f1', 'f2']);
    }

在model_2中:

public function model_1()
    {
        return $this->belongsTo(model_1::class, ['f1', 'f2'], ['f1', 'f2']);
    }

Compoships支持急切加载。

答案 2 :(得分:-1)