Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Laravel 4中保存具有多个外键的模型_Laravel_Laravel 4_Save_Eloquent_Belongs To - Fatal编程技术网

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

在Laravel 4中保存具有多个外键的模型,laravel,laravel-4,save,eloquent,belongs-to,Laravel,Laravel 4,Save,Eloquent,Belongs To,我知道,为了保存外键,应该使用相关的模型和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'); $ci

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

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

我真的看不出做
User::create(Input::all())有什么错

显然你需要一些验证,但它也在做同样的事情

我认为
associate()
方法对于与您的情况相反的情况更有用

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

$city=city::create(Input::all())
将只满足您需求的前一半,因为城市没有
用户id
列,因此该用户尚未连接

然后需要执行类似于
$city->user()->associate(user::find(Auth::user()->id))

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

此链接应回答您的问题。

感谢您的输入,当然需要验证,但这两种情况都需要验证,所以我不是故意的。也许你是对的,在你的场景中,associate()有更多的意义,但我想我对L4做得还不够,还不知道什么时候
associate()
会派上用场。我愿意让这个问题公开,看看是否有人提出了更好的解释/想法。干杯