【问题标题】:Cannot create relationship with multiple child models无法与多个子模型创建关系
【发布时间】:2019-04-12 06:11:12
【问题描述】:

我有三个模型成员,贷款和储蓄。贷款和储蓄是会员的孩子。但是,我只能与贷款建立关系。当我与储蓄建立关系时,它认为该功能是非静态的。

会员.php

use Illuminate\Database\Eloquent\Model;
class Member extends Model
{
 protected $fillable=['name','address','phone']; 
 public function loan()
{
    return $this->hasMany(Loan::class,'member_id','id');
}
 public  function saving()
{
    return $this->hasMany(Saving::class,'member_id','id');
}

}

保存.php

  use Illuminate\Database\Eloquent\Model;
  class Saving extends Model
  {
  protected $fillable=['amount','member_id']; 
   public function member()
   {
    return $this->belongsTo('App\Member','id','member_id');
    }

}

函数 Saving() 给出以下错误。

 Error::Cannot make static method Illuminate\Database\Eloquent\Model::saving() non static in class App\Member

我没有遇到过这个问题,缺乏核心概念。

【问题讨论】:

  • Model 类已经包含一个名为 saving 的方法。您必须选择其他名称。
  • 我必须做出哪些改变才能与会员建立一对一的关系 - 贷款。除了使用 hasOne 还有什么变化??
  • HasOne 是正确的关系。不行吗?
  • 当我将其更改为 hasOne 时,它​​会出现“尝试正确获取非对象”错误。我尝试交换密钥,在这种情况下它会给出“foreach 中的无效数据”错误
  • 请为此打开一个新问题。

标签: laravel eloquent model


【解决方案1】:

您在 belongsTo 关系中提供了错误的键,提供如下:

public function member()
{
return $this->belongsTo('App\Member','member_id','id');
}

【讨论】:

  • 我也试过了。它不工作。我交换了密钥来尝试 hasOne 关系。
【解决方案2】:

在您的 Model.php 更改以下

public function loan()
{
    return $this->hasMany('App\Loan','member_id','id');
}
 public  function saving()
{
    return $this->hasMany('App\Saving','member_id','id');

【讨论】:

  • 所以 laravel 本身已经使用了函数 Saving()……我把它改成了函数 Saving(),它起作用了。谢谢你们俩。
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多