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

السؤال

نشر

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

$clients = $store->clients();
$clients = $store->clients;

$clients = $store->clients()->get();
$clients = $store->clients->get();

أريد الحصول على قائمة الزبائن لمتجر معين بعلاقة متعددة many to many ومن بعدها الدمج مع مجموعة العناصر الموجودة وحاولت إجراء حلقة على الزبائن بهذا الشكل:

foreach ($clients as $client) 
{
    $available_items = array_merge($client->items(), $available_items);
}

ولك ما الفرق بين استخدام الأقواس ضمن التوابع أو العلاقات؟ وماذا يجب أن استخدم في هذه الحالة؟

Recommended Posts

  • 0
نشر

عند استخدام التوابع أي (الأقواس) عند الإشارة لعلاقة، فإنك تقوم باستدعاء التابع الذي قام بدوره بتعريف العلاقة:

public function clients(){
    return $this->hasMany('Clients');
}

وبالتالي عند كتابة $store->clients() فإننا نستحدث نسخة من Illuminate\Database\Eloquent\Relations\HasMany.

ويتم استخدامها في العلاقات عندما نريد إضافة بعض التفاصيل للاستعلام، مثلاً:

$clients = $store->clients()->where('balance', '>', 2000)->get();

أما العلاقات الديناميكية في لارافيل والتي يمكن الوصول لها بشكل مباشر $model->relation فإنها تقوم باستدعاء Illuminate\Database\Eloquent\Model والذي بدوره يقوم بجلب الصفات attributes الموافقة لهذه العلاقة.

ولذلك نجد عند تنفيذ كل منها:

$model->relation() تعيد غرض من العلاقة Object

$model->relation تعيد نتيجة العلاقة نفسها

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...