我知道为了保存外键,应该使用相关的模型和associate()
函数,但是真的值得经历这个
$user = new User([
'name' => Input::get('name'),
'email' => Input::get('email')
]);
$language = Language::find(Input::get('language_id');
$gender = Gender::find(Input::get('gender_id');
$city = City::find(Input::get('city_id');
$user->language()->associate($language);
$user->gender()->associate($gender);
$user->city()->associate($city);
$user->save();
什么时候可以做到这一点?
User::create(Input::all());
我觉得我在这里遗漏了一些东西,也许有更简单,更简洁的方法来处理控制器(和视图)中的外键?
您可以使用push()方法,这将允许您推送到相关模型。
此链接应该回答您的查询。 Eloquent push()和save()的区别
我真的没有看到做User::create(Input::all());
任何错误User::create(Input::all());
。
显然你想要一些验证,但它做的是同样的事情。
我认为associate()
方法对于你的情况的反转更有用。
例如,假设您有一个表单,用户可以填写该表单以将其城市添加到您的应用程序,并且在这样做时,它们应自动分配到该城市。
$city = City::create(Input::all());
只会达到您的要求的前半部分,因为尚未附加用户,因为城市没有user_id
列。
然后你需要做一些像$city->user()->associate(User::find(Auth::user()->id));