类型错误:参数1传递给 Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save()必须是 Illuminate \ Database \ Eloquent \ Model的实例,实例 Illuminate \ Database \ Eloquent \ Collection
我打算为有个人资料的用户生成假日期。我有两个型号:User&轮廓。我已经与彼此建立了关系。但是当我执行它并且问题来了。以上是我运行Seeder时的错误。
这是发现错误的类。
public function run()
{
factory(App\User::class, 40)->create()->each(
function($user) {
$user->profile()->save(
factory(App\Profile::class, 1)->make()
);
}
);
}
答案 0 :(得分:1)
我猜你正在使用Laravel 5.4。
这是factory()辅助方法的修改。来自文档:
工厂助手 调用工厂(User :: class,1) - > make()或factory(User :: class,1) - > create()现在将返回一个包含一个项目的集合。以前,这将返回单一模型。如果未提供金额,此方法将仅返回单个模型。
Laravel 5.3 to 5.4 updgrade guide
这意味着您应该从factory()调用中删除1。
public function run(){
factory(App\User::class, 40)->create()->each(
function($user) {
$user->profile()->save(
factory(App\Profile::class)->make()
);
}
);}
编辑1:您必须更改此行:
factory(App\Profile::class, 1)->make()
到此
factory(App\Profile::class)->make()
答案 1 :(得分:0)
通过调用方法获取关系$user->profile()
,将相关模型作为Collection
返回。您可以$user->profile()->first()
执行Illuminate\Database\Eloquent\Model
类型的结果,或仅$user->profile
的{{1}}结果。