繁体   English   中英

Laravel eloquent 如何动态创建关系?

[英]Laravel eloquent how to dynamically create relations?

我需要使用不同的表和外键为我的模型动态创建不同的关系(oneToOne、manyToMany、oneToMany),然后使用所有这些关系检索我的模型。 有什么办法吗? 例如,不要做这样的事情:

public function relOne()
{
    return $this->hasMany('one', 'foreign_one', 'one');
}
        
public function relTwo()
{
    return $this->hasMany('two', 'foreign_two', 'two');
}

我需要做这样的事情:

$model->createRelation('relOne', function ($model) {
    return $model->hasMany('one', 'foreign_one', 'one');
});

$model->createRelation('relTwo', function ($model) {
     return $model->hasMany('two', 'foreign_two', 'two');
});

PS 我有 Laravel 6.X

我建议使用eloquent-dynamic-relation

你可以安装它:

composer require i-rocky/eloquent-dynamic-relation

在您的模型中使用特征:

    use Rocky\Eloquent\HasDynamicRelation;

class MyModel extends Model {
  use HasDynamicRelation;
}

那么你可以简单地写:

MyModel::addDynamicRelation('some_relation', function (MyModel $myModel) {
    return $myModel->hasMany(SomeRelatedModel::class);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM