【问题标题】:laravel belongsTo gives nulllaravel belongsTo 给出 null
【发布时间】:2016-06-22 14:53:33
【问题描述】:

laravel 中的belongsTo 关系返回null

public function games(){
    return $this->belongsTo('App\Models\Game');
  }

但是当我提供密钥作为参数时,它似乎工作正常

  public function games(){
        return $this->belongsTo('App\Models\Game','game_id');
      }

但根据docs game_id 本身就是一个默认参数。我在这里缺少的小东西是什么。

谢谢

【问题讨论】:

  • 这更像是一个旁注,但它不应该是game(),因为它属于单个游戏吗?
  • @ThunderBird 你也可以提供关系的另一面吗?还有与您的数据库架构相关的部分吗?

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


【解决方案1】:

关系的belongsTo 端根据关系方法的名称构建外键名称。此行为不同于关系的 hasOne/hasMany 端,后者使用类的名称。

在这种情况下,您的关系方法被命名为games,因此它将查找外键字段games_id。您可以提供外键字段作为第二个参数,如您所展示的,也可以将您的关系方法重命名为game()

【讨论】:

    【解决方案2】:

    看起来您的方法名称“游戏”可能是问题所在。一对多关系的假设是父类是单数,而子类是复数。尝试将名称“games”更改为“game”,并且不需要 key 参数。

    此时,我猜 Laravel 认为你的 id 键是“games_id”。

    【讨论】:

      【解决方案3】:

      就我而言,我使用public 来定义变量。当我更改为 protected 时,它起作用了。

      public $fillable = [..class properties..];
      

      改为

      protected $fillable = [..class properties..];
      

      【讨论】:

        猜你喜欢
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多