这样确实是可以了,只是我还是没有理解为何一定要 return $user呢?
前面不是User::create已经将数据写入数据库了吗?但如果不 return $user就会报错这是肯定的
谢谢大家的热心回复,在此一并感谢
使用laravel5.3,直接使用make:auth生成用户注册管理,遇到了一个问题,请大家指点,谢谢:
因为想要给注册用户发送邮件,所以想直接将发送邮件的语句直接写在 RegisterController控制器的create方法中,但这个create方法中的 return User::create 为何不能改为 User::create 呢?因为这个直接return,如此一来,就不能实现创建用户之后再发送邮件了
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'avatar'=>'/image/default_user_avatar.jpg',
'confirm_code'=>str_random(48),
]);
}
你说得很对,必须要有一个返回值才可以
$article = new App\Article;
$article = $article->find(1);
$article->user;
教主就是教主,这样就对了,再次感谢
感觉是只要用了 new 这个关键字,生成相应的新的model的实例,就不会有正确的结果了,再次感谢您百忙中的回复
用您这两行代码没有问题,会返回正确的结果,但分开就不行,很奇怪,
下面是 user 这个model的执行结果:
>>> $user = new App\User;
=> App\User {#704}
>>> $user->find(1);
=> App\User {#716
id: 1,
name: "icanfly",
email: "yuxi767@gmail.com",
created_at: "2016-11-24 18:33:40",
updated_at: "2016-11-24 18:33:40",
}
>>> $user->articles;
=> Illuminate\Database\Eloquent\Collection {#705
all: [],
}
>>> $user->articles();
=> Illuminate\Database\Eloquent\Relations\HasMany {#702}
>>> $user->articles->toArray();
=> []
>>>
谢谢您的回复,刚刚执行了一下,这是结果:
>>> $article = new App\Article;
=> App\Article {#698}
>>> $article->find(1);
=> App\Article {#718
id: 1,
title: "CPU宸环",
body: "php artisan migrate:refresh",
publishat: "2016-11-24 18:33:53",
created_at: "2016-11-24 18:33:53",
updated_at: "2016-11-24 18:33:53",
user_id: 1,
}
>>> $article->user();
=> Illuminate\Database\Eloquent\Relations\BelongsTo {#703}
>>>
这样也没有预想要的结果,奇怪的是它并没有返回null
>>> $article=new App\Article;
=> App\Article {#702}
>>> $article->find(1);
=> App\Article {#701
id: 1,
title: "CPU宸环",
body: "php artisan migrate:refresh",
publishat: "2016-11-24 18:33:53",
created_at: "2016-11-24 18:33:53",
updated_at: "2016-11-24 18:33:53",
user_id: 1,
}
>>> $article->user;
=> null
请问教主,为何这样执行命令,就只会返回空呢?谢谢