在Laravel环境(v 5.7)中,我有两个表:films和versions在模型中定义的一对多关系中的相关性如下:
class Film extends Model {
...
public function versions() {
return $this->hasMany(Version::class);
}
}
class Version extends Model {
...
public function film() {
return $this->belongsTo(Film::class);
}
}
我想选择一个电影的随机版本及其相关的父电影,所以在控制器中,我这样做:
...
use App\Film;
use App\Version;
class HomeController extends Controller {
...
public function index() {
$rndVersion = Version::inRandomOrder()->first();
$relatedFilm = $rndVersion->film->first();
一切正常,除了返回的电影始终是整个记录集的第一个,而不是我先前从数据库加载的version的父项。
我尝试与以下对象一起检索所有内容:
$rndVersion = Version::inRandomOrder()->with('film')->first();
并且它可以工作,但是将所有内容打包在$ rndVersion中存储的单个对象中,我宁愿将这两件事分开保存。
所以,我在做什么错?我通常应该怎么做才能获得选定/加载的记录的父记录?
谢谢你。
我发现了问题...