【发布时间】:2020-04-04 08:45:31
【问题描述】:
在 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();
一切正常,除了 返回的 film 始终是整个记录集的第一个,而不是我之前加载的 version 的父级来自数据库。
我已尝试将所有内容与以下内容一起检索:
$rndVersion = Version::inRandomOrder()->with('film')->first();
它可以工作,但它会将所有内容打包在一个存储在 $rndVersion 中的对象中,我宁愿将这两个东西分开。
那么,我做错了什么? 我一般应该怎么做才能获得选定/加载的父记录?
提前谢谢你。
【问题讨论】:
标签: relationship one-to-many laravel-5.7 eloquent-relationship