【问题标题】:Laravel 4 relationshipsLaravel 4 关系
【发布时间】:2013-08-16 13:51:27
【问题描述】:

我找不到定义关系的方法。这是我之前的问题,您可以查看它以找到我要查找的内容:PHP/Laravel/Bootsrap fetch data

我已经为这样的技能定义了关系:

public function skills()
{
    return $this->hasMany('Skill', 'player_skills', 'skillid', 'player_id');
}

指向 $skills->players as $player 时仍然出现 Undefined property: Illuminate\Database\Eloquent\Collection::$players 错误。

【问题讨论】:

  • 您可以发布您遇到错误的代码吗?您发布的代码与错误无关
  • @TryingTobemyself paste.laravel.com/JoD
  • 你从哪里得到$skills?型号代码??
  • paste.laravel.com/JoG 假设您的关系设置正确。在您的模型中,您还需要拉动枢轴变量。请将您的模型也添加到粘贴桶中,我将能够完全回答您。
  • @TryingTobemyself paste.laravel.com/JpD

标签: many-to-many laravel laravel-4


【解决方案1】:

首先,使用hasMany 函数,您正在设置一对多关系,但看起来您正在将数据透视表的名称作为参数发送给它,这仅需要多对多。

我将假设您实际上想要多对多关系并且您的密钥是正确的(它们在您链接的问题中,但 skillid 在这里不同,所以让我们使用 skill_id

另外,您循环数据的方式是错误的。 $players->skills 没有任何意义,因为$players 没有skills,但$player 有。

这是我目前所拥有的...http://paste.laravel.com/Jp8

根据您提供的最新信息,我认为 Laravel 中多对多关系的工作方式可能有些混乱。有机会时请检查一下,它应该非常接近您正在寻找的东西......http://paste.laravel.com/JqV

【讨论】:

  • 我收到一个错误:paste.laravel.com/Jrh'players' 是一个单独的表,'player_skills' 是一个单独的表。
  • 我认为问题是您需要一个额外的表来设置数据透视表。我修改了粘贴来做一些额外的解释,并修改了一些参数以完全匹配你所拥有的。希望对您有所帮助...paste.laravel.com/JrP
猜你喜欢
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2016-02-12
  • 2015-06-01
  • 2013-10-21
  • 2014-08-30
相关资源
最近更新 更多