是否可以在不使用laravel 5.4中的循环的情况下为特定用户存储多个电话号码

时间:2017-07-08 18:46:00

标签: php laravel-5.4 laravel-eloquent

我在laravel 5.4中有一段感情,

用户模型中的

public function phones()
    {
        return $this->hasMany(UserPhone::class);
    }

在UserPhone模型中

public function user()
   {
        return $this->belongsTo(User::class);
   }

现在如果从表格我输入多个电话记录如下:

<input type="text" name="phone[]">
<input type="text" name="phone[]">
<input type="text" name="phone[]">

那么,  如何为目前在laravl5.4中登录的特定用户存储这些电话?

3 个答案:

答案 0 :(得分:0)

试试这个

$user = User::find($id) ;
$user->phones()->saveMany([
new UserPhone(['phone'=> Input::get('phone')[0] ]) ,
new UserPhone(['phone'=> Input::get('phone')[1] ]),
...
]);

答案 1 :(得分:0)

$contact = [];
   foreach ($current_user_contact->phone as $key => $value) {
                array_push($contact, new UserPhone(['phone' => $value]));
   }
$current_user->phones()->saveMany($contact);

没有for循环我找不到解决它的方法,不得不采用上面提到的方式..它与Milad提到的相同

答案 2 :(得分:0)

$newUser = User::findOrFail(1);
    $phones = [
        ['phone' => '111111111'],
        ['phone' => '111111112'],
        ['phone' => '111111113'],
        ['phone' => '111111114'],
    ];

    foreach ($phones as $phone) {
        $phone = new UserPhone($phone);
        $phone->user()->associate($newUser);
        $phone->save();
    }