Php 建立雄辩关系的正确方法
我意识到这样的问题可能会让人困惑和难以理解,但我会尽可能详细地解释我的问题 我想做的:展示某个戏剧正在上演的所有日子 我拥有的内容:一个包含迄今为止执行的所有播放的表,以及一个包含所有日期的表(包括一个外键,该外键指向每行中关联的播放) 以下是我如何建立两者之间的关系: Days.phpPhp 建立雄辩关系的正确方法,php,laravel-5.4,laravel-eloquent,Php,Laravel 5.4,Laravel Eloquent,我意识到这样的问题可能会让人困惑和难以理解,但我会尽可能详细地解释我的问题 我想做的:展示某个戏剧正在上演的所有日子 我拥有的内容:一个包含迄今为止执行的所有播放的表,以及一个包含所有日期的表(包括一个外键,该外键指向每行中关联的播放) 以下是我如何建立两者之间的关系: Days.php <?php namespace App; use Illuminate\Database\Eloquent\Model; class Days extends Model { publi
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Days extends Model
{
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Plays extends Model
{
public function days()
{
return $this->hasMany('App\Days');
}
}
将类名更改为单数名词(Play,Day)或在hasMany关系中指定外键。Laravel试图从类名中猜出外键名,在这种情况下,它试图通过plays_id key查找天数。将类名更改为单数名词(Play,Day)或在hasMany relation中指定外键。Laravel尝试从类名猜测外键名,在这种情况下,它尝试通过plays_id key查找天数。一旦定义了关系,我们可以使用Eloquent的动态属性检索相关记录。
尝试$play->days而不是$play->days()循环中的一旦定义了关系,我们就可以使用Eloquent的动态属性检索相关记录。
尝试$play->days而不是$play->days()在循环中最后,结果是sahed和Dmitri的答案的组合:
我指定了在两个模型中使用哪个外键,因为在我使用它们的任何位置重命名它们都需要非常非常长的时间:
播放模型
public function days()
{
return $this->hasMany('App\Days', 'play_id');
}
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
天模式
public function days()
{
return $this->hasMany('App\Days', 'play_id');
}
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
以前,我只做了几天,但显然这两种方法都需要
另外,移除支架修复了最后几个问题,所以谢谢大家 最后,结果是sahed和Dmitri的答案的结合:
我指定了在两个模型中使用哪个外键,因为在我使用它们的任何位置重命名它们都需要非常非常长的时间:
播放模型
public function days()
{
return $this->hasMany('App\Days', 'play_id');
}
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
天模式
public function days()
{
return $this->hasMany('App\Days', 'play_id');
}
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
以前,我只做了几天,但显然这两种方法都需要
另外,移除支架修复了最后几个问题,所以谢谢大家