2016-04-14 34 views
0

ile birden çok kayıt ekleme Merhaba Birden fazla kullanıcının atayabileceği bir tablo (proje) var. Yeni bir proje oluştururken, seçilen kullanıcıları kullanıcının kimliği ve oluşturulan project_id ile bir bağlantı tablosuna eklemem gerekiyor. Şu andaLaravel Aralık dışı değişken

$project = new Project; 
    $project->project_name = $request->project_name; 
    $project->expected_start_date = $request->expected_start_date; 
    $project->expected_end_date = $request->expected_end_date; 
    $project->project_desc = $request->project_desc; 
    $project->client_id = $request->client_id; 
    $project->save(); 

    foreach($request->user_id as $user){ 
     $link_project_user = new link_project_user; 
     $link_project_user->user_id = $user; 
     $link_project_user->project_id = $project->id; 
     $link_project_user->save(); 
    } 

Sonra seçilen kullanıcının döngü ve her biri için yeni bir kullanıcı oluşturarak, proje oluşturma ve $ projeye> id yoluyla id alıyorum. Ancak bu, teoride, veritabanına birden fazla sorgu yapacağı için, bu durum biraz verimsiz gibi görünmektedir. Yukarıdaki ekleri uygulamak için en etkili ve en uygun yol ne olurdu.

Orijinal olarak bir dizi kullanıcıya geçmeyi denedim, ancak bunun ardından bir dizi proje kimliği gerekiyordu.

cevap

0

Bunun gibi bir toplu ekleme yapabilirsiniz.

$project = new Project; 
$project->project_name = $request->project_name; 
$project->expected_start_date = $request->expected_start_date; 
$project->expected_end_date = $request->expected_end_date; 
$project->project_desc = $request->project_desc; 
$project->client_id = $request->client_id; 
$project->save(); 

$lpus = []; 

foreach($request->user_id as $user){ 
    $link_project_user["user_id"] = $user; 
    $link_project_user["project_id"] = $project->id; 
    $lpus[] = $link_project_user; 
} 

link_project_user::insert($lpus); 
+1

Basit zarif çözüm, çok teşekkürler! Bunu düşünmüştüm ama potansiyel olarak Laravel özelliğinde yapılmış olduğunu düşündüm. –

İlgili konular