在Laravel 4中保存具有多个外键的模型

问题描述 投票:5回答:2

我知道为了保存外键,应该使用相关的模型和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());

我觉得我在这里遗漏了一些东西,也许有更简单,更简洁的方法来处理控制器(和视图)中的外键?

laravel laravel-4 save eloquent belongs-to
2个回答
1
投票

您可以使用push()方法,这将允许您推送到相关模型。

此链接应该回答您的查询。 Eloquent push()和save()的区别


0
投票

我真的没有看到做User::create(Input::all());任何错误User::create(Input::all());

显然你想要一些验证,但它做的是同样的事情。

我认为associate()方法对于你的情况的反转更有用。

例如,假设您有一个表单,用户可以填写该表单以将其城市添加到您的应用程序,并且在这样做时,它们应自动分配到该城市。

$city = City::create(Input::all()); 只会达到您的要求的前半部分,因为尚未附加用户,因为城市没有user_id列。

然后你需要做一些像$city->user()->associate(User::find(Auth::user()->id));

© www.soinside.com 2019 - 2024. All rights reserved.