【问题标题】:Has one relationship depend on rules有一种关系取决于规则
【发布时间】:2019-02-14 01:38:18
【问题描述】:

有什么方法可以使 1 个模型与两个不同模型之一之间存在一种关系,这取决于 rule_id,例如:

 if($this->rule_id==1)
     return $this->hasOne('App\model2');
 else
     return $this->hasOne('App\model3');

如果你有更好的方法或者这个方法可以提前通知我谢谢

【问题讨论】:

  • 您能否为您的问题提供一些背景信息?如果您能够告诉我们您实际想要实现的目标,而不仅仅是使用抽象示例,那么它可能会帮助我们为您指明正确的方向。您所追求的似乎可以使用polymorphic relations 解决,但我不能确定。
  • @Jonathon 嘿,感谢您的回复我正在尝试制作一个所有用户都可以使用的通用模型,然后该用户的额外或附加字段可以从其他模型中获取取决于他的规则。
  • 只是添加到上面的评论中,您也可以拥有morphOne 而不是morphMany 关系。

标签: php laravel model relationship rules


【解决方案1】:

更好地声明与两个模型的关系。迟早它会同时满足这两个条件并与两个模型建立关系。为什么不首先声明两者?

【讨论】:

  • 因为用户可以是管理员或用户,所有这些都有不同的额外字段取决于他的规则。
  • 然后为两者制作不同的表和模型并正确声明关系
【解决方案2】:

你可以像这样在你的模型中构建一个自定义函数,并带有用于检查它的参数

public function test($val){
    if($val==1)
       return $this->hasOne('App\model2');
    else
       return $this->hasOne('App\model3');
}

然后你就可以调用你视图中的函数了

$your object data sent from controller ->test(1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多