Mohammad Yousef3 نشر 26 مارس 2021 أرسل تقرير نشر 26 مارس 2021 لدي هذا البرنامج لاستخراج مجموعة صفوف $query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get(); يقوم باسترجاع القيم كالآتي (مثلا) [{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}] أرغب بتخزينهم مباشرة في جدول آخر يحتوي على حقلين ('user_id', 'subject_id') هل من طريقة لفعل ذلك مباشرة دون استخدام جملة الإضافة لكل سجل على حدا ؟ اقتباس
0 Waleed Alfakiat نشر 26 مارس 2021 أرسل تقرير نشر 26 مارس 2021 يمكنك في Laravel إدراج عدة جداول بجملة واحدة, وذلك عن طريق تجميعهم في مصفوفة وتمريرها في النموذج الخاص بالجدول, كالتالي: $data = [ ['user_id'=>'1', 'subject_id'=> 140], ['user_id'=>'2', 'subject_id'=> 270], ... ]; Model::insert($data); وفي البرنامج الخاص بك, فإنّ البيانات فعليًا مخزنة في المتغير $query فنقوم مباشرة بإدراجها في قاعدة البيانات : Model::insert($query); 2 اقتباس
0 سمير عبود نشر 26 مارس 2021 أرسل تقرير نشر 26 مارس 2021 نعم يُمكنك إستخدام التابع insert لعمل تخزين لعدة سجلات لكن يجب أن تكون السجلات على شكل مصفوفة فمثلا هنا: $data = UserSubject::where('user_id', Auth::id())->select('subject_id')->get(); السجلات ستكون على هيئة collection بالتالي يجب عليك تغييرها إلى مصفوفة بإستخدام التابع toArray بهذا الشكل: $data = UserSubject::where('user_id', Auth::id()) ->select('subject_id') ->get() ->toArray(); ثم يُمكنك إستخدام insert: Model::insert($data); // أو DB::table('table_name')->insert($data); و إلا سيُعطيك الخطأ التالي: TypeError: Argument 1 passed to Illuminate\Database\Query\Builder::insert() must be of the type array, object given, 1 اقتباس
السؤال
Mohammad Yousef3
لدي هذا البرنامج لاستخراج مجموعة صفوف
يقوم باسترجاع القيم كالآتي (مثلا)
أرغب بتخزينهم مباشرة في جدول آخر يحتوي على حقلين ('user_id', 'subject_id')
هل من طريقة لفعل ذلك مباشرة دون استخدام جملة الإضافة لكل سجل على حدا ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.