据我所知,为了保存外键,应该使用相关模型和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());
我觉得我在这里遗漏了一些东西,也许在控制器(和视图)中处理外键的方式更简单,更简洁?
答案 0 :(得分:1)
您可以使用push()方法,这样可以推送到相关模型。
此链接应该回答您的问题。 Eloquent push() and save() difference
答案 1 :(得分:0)
我真的没有看到做User::create(Input::all());
的任何错误。
显然你需要一些验证,但它正在做同样的事情。
我认为associate()
方法对于你的情况的倒数更有用。
例如,假设您有一个表单,用户可以填写该表单以将其城市添加到您的应用中,并且一旦这样做,它们就会自动分配到该城市。
$city = City::create(Input::all());
只会达到您要求的前半部分,因为用户尚未附加,因为城市没有user_id
列。
然后你需要做$city->user()->associate(User::find(Auth::user()->id));