Php Laravel雄辩地讲述了如何动态创建关系?
我需要使用不同的表和外键为我的模型动态创建不同的关系(oneToOne、manyToMany、oneToMany),然后使用所有这些关系检索我的模型。有什么办法吗?例如,不要这样做:Php Laravel雄辩地讲述了如何动态创建关系?,php,laravel,eloquent,Php,Laravel,Eloquent,我需要使用不同的表和外键为我的模型动态创建不同的关系(oneToOne、manyToMany、oneToMany),然后使用所有这些关系检索我的模型。有什么办法吗?例如,不要这样做: 公共函数relOne() { return$this->hasMany('one','foreign_one','one'); } 公共职能(二) { return$this->hasMany('two','foreign_two','two'); } 我需要这样做: $model->createRelation
公共函数relOne()
{
return$this->hasMany('one','foreign_one','one');
}
公共职能(二)
{
return$this->hasMany('two','foreign_two','two');
}
我需要这样做:
$model->createRelation('relOne',函数($model){
return$model->hasMany('one','foreign_one','one');
});
$model->createRelation('relTwo',函数($model){
return$model->hasMany('two','foreign_two','two');
});
另外,我推荐使用Laravel 6.X
您可以安装它:
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);
});
欢迎来到苏。。。你看到这个了吗。。。还是你只想为一个实例做这件事?@lagbox谢谢你的回复!这些必须是特定于单个实例的。这是否回答了您的问题?嗨,谢谢你的帮助。不幸的是,我的模型是完全动态的,所以它甚至没有预设的表(我使用fabric创建实例并在实例中设置表以及所有字段等),所以这个特性对我不起作用,因为它找不到表并抛出错误。