【发布时间】:2015-09-22 12:58:28
【问题描述】:
我正在关注 Laravel 5.x Laracast 视频系列,现在它是关于建立 Eloquent 关系的,除了涉及的类之外,我写的完全一样,但我一直得到一个“类应用程序”当我尝试在修补程序中进行测试时出现“未找到车辆”错误。没有 Vehicles 模型是正确的,但是由于模型是单一的,所以我不确定为什么会抛出错误。我已经运行了 composer dump-autoload 所以不是没有看到文件。
用户模型
/**
* A user can have many vehicles.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function vehicles() {
return $this->hasMany('App\Vehicle');
}
车辆模型
/**
* A vehicle is owned by a user
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function owner()
{
return $this->belongsTo('App\User');
}
数据库迁移和种子成功,我已经验证了种子中的数据库记录。
修补匠
$user = App\User::first(); // provides the proper user with id = 1
$vehicle = App\Vehicle::first(); // provides the proper vehicle with user_id of 1
但是
$user->vehicles->toArray(); // Throws the "Class App\Vehicles Not Found error"
我已经观看了 3 次视频以尝试发现任何问题,除了将模型命名为 Vehicle 而不是 Article 之外,没有任何区别。
更新
在帮助下第一个问题得到解决,但调用:
App\Vehicle::first()->owner->toArray();
在belongsTo关系上抛出一个错误说:
[Symfony\Component\Debug\Exception\FatalErrorException]
Call to a member function toArray() on null
【问题讨论】:
-
你是不是一开始不小心把
return $this->hasMany('App\Vehicles');写成复数形式,然后没有重新加载Tinker?这是我唯一能想到的。 -
嗨@JoelHinz,可以。我不知道你必须重新启动 Tinker。我只是假设它有一个手表。非常感谢!!!
-
去过那里,做过...太多次了。 :) 很高兴它对你有用。
-
@JoelHinz 你知道为什么车辆的 belongsTo 关系会为空吗?第一部分 App\Vehicle::first() 有效,但所有者的模型关系返回 null 导致 toArray() 失败。我检查了关系、迁移和数据库的记录。
-
可能是因为你没有调用方法
user而是owner,你需要指定表和/或键。不确定。
标签: php laravel eloquent laravel-5