2015-04-13 5 views
0
$input['activities'] = array(3,2,5); 

foreach($input['activities'] as $activity_id){ 

    $user_activities = new User_activities; 

    $user_activities->activity_id = $activity_id; 

    $user_activities->user_id = Auth::id(); 

    $user_activities->save(); 

} 

Возможно ли иметь одну строку сценария для выполнения вышеуказанного сохранения для каждого утверждения в Laravel? Вместо этого сохранить в foreach, можно ли это сделать в одной строке?Laravel, вставьте несколько строк без использования foreach

+1

если вы довольны моим ответом ниже, вы можете принять его :) –

ответ

2

Я нашел решение,

$activities = array(3,2,5); 
$user->activities()->sync($activities); 

модель пользователя будет деятельность функционировать как следующий,

public function activities() 
{ 
    return $this->belongsToMany('App\Activity', 'user_activities')->select(['activities.id'])->withTimestamps(); 
} 
5

Просто передайте массив массивов Eloquent::insert():

$data = []; 

foreach($input['activities'] as $activity_id) { 
    $data[] = [ 
     'activity_id' => $activity_id, 
     'user_id' => Auth::id() 
    ]; 
} 

Coder::insert($data); 
+3

Вставить не будет добавлено crea ted_at и updated_at. Это необходимо добавить вручную. :) –

+0

$ input [activity] содержит массив значений, который необходимо вставить без использования foreach в отдельных строках. –

Смежные вопросы