اذهب إلى المحتوى
  • 0

كيفية الحصول على id الخاص بكائن تمت إضافته للتو في لارافيل Laravel؟

Emad Saif

السؤال

لدي مشروع عبارى عن متجر إلكتروني وأريد أن أقوم بإضافة منتج جديد إلى قاعدة البيانات والحصول على المعرف id الخاص بهذا المنتج بمجرد إضافته:

$product = new Product;
$product->name = $request->name;
$product->price = $request->price;

$product->save();

كيف أعرف id الخاص بهذا المنتج في لارافيل Laravel؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك الحصول على المعرف الخاص بالنموذج مباشرة بعد حفظه كالتالي:

$product->save();

$product->id; // المعرّف

أو في حال كان حقل المعرف الأساسي للجدول من نوع Auto Increment فيمكنك الحصول على آخر نموذج تمت إضافته عبر الاستعلام التالي:

$product = Product::orderBy('id', 'desc')->first();

في هذه الحال يجب التأكد من أن نسخة واحدة من تطبيقك فقط تتعامل مع قاعدة البيانات، لتجنب إنشاء عنصر جديد من قبل نسخة أخرى قبل حصولك على جواب الاستعلام السابق فتحصل على جواب خاطئ

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك الحصول على الid بعد حفظ المنتج في قاعدة البيانات بواسطة الاسم الخاص به..

أي كالتالي.

$productId = Product::where('name', '=', $product->name)->first()->id;

هنا قمنا بعملية بحث داخل جدول المنتجات للحصول على المنتج مطابق للاسم .. ثم نحصل على المعرف الخاص به ونخزنه في المتغير productId

بهذه الطريقة يمكننا الحصول على ال id المنتج الذي تمت إضافته .. فيصبح الكود بشكل كامل ..

##عملية الإضافة
$product = new Product;
$product->name = $request->name;
$product->price = $request->price;
$product->save();

#عملية الحصول على المعرف
$productId = Product::where('name', '=', $product->name)->first()->id;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

بالإضافة الى الطرق التي قدمها المدربون يمكنك استخدام التابع insertGetId كالتالي

$id = Product::insertGetId(
	        ['name' => $request->name,'price' => $request->price]
	    );

ولكن لا تنسى في ملف نموذج Product ان تضيف الحقول الى الخاصية fillable كالتالي

protected $fillable=['name','price'];

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

بجانب ما اقترحه المدربون يمكنك استعمال lastInsertId في حالة رغبت باستخدام insert K وهو احد توابع الواجهة DB التي تقوم بجلب آخر معرف لآخر عنصر تم ادراجه بشكل عام، يكون ذلك بعد تنفيذ الادراج: 

User::insert($data);

$id = DB::getPdo()->lastInsertId(); 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك أن تستخدم max Function 

DB::table('products')->find(DB::table('products')->max('id'));

هذه ال function تجلب لك أكبر id موجود في products table .

والحل الثاني أنك تجلب جميع البيانات بالترتيب التنازلي Desc ، ثم تجلب أول عنصر من البيانات 

$products = Product::orderBy('id', 'desc')->first(); 

ولكن من ناحية ال performance الطريقة الاولى أفضل . 

ولاحظ في الطريقة الاولى ستتعامل مع Query Builder

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...