عند العمل مع نماذج البيانات المعقدة، يصبح من الضروري استرداد البيانات من جداول متعددة عن طريق إنشاء علاقات بينها. تسمح لك الصلات اليسرى بإحضار جميع الصفوف من جدول واحد والصفوف المطابقة فقط من الجدول الآخر.
يتم تلقي خطأ شائع قد ينشأ عند محاولة الانضمام الأيسر في Doctrine. خطأ بناء الجملة التالي:
[خطأ في بناء الجملة] السطر 0، العمود 98: خطأ: المتوقع Doctrine\ORM\Query\Lexer::T_WITH، حصلت على 'ON'
يحدث هذا الخطأ عندما " ON" يُستخدم في جملة الصلة بدلاً من "WITH." لحل هذه المشكلة، استبدل "ON" بـ "WITH" كما هو موضح أدناه:
$qb->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id')
تنفيذ الصلات اليسرىلتنفيذ الصلات اليسرى في Doctrine، هناك طريقتان:مع اقتران:
إذا كان الكيان الخاص بك مرتبطًا بالجدول الذي تريد الانضمام إليه، فيمكنك استخدام بناء الجملة التالي:$qb
->select('a', 'u')
->from('Credit\Entity\UserCreditHistory', 'a')
->leftJoin('a.user', 'u')
->where('u = :user')
->setParameter('user', $users)
->orderBy('a.created_at', 'DESC');
في هذه الحالة، يمثل "Credit\Entity\UserCreditHistory#user" الارتباط بين الكيانين.بدون اقتران:
في حالة عدم وجود اقتران، يمكنك استخدام بناء الجملة التالي:$qb
->select('a', 'u')
->from('Credit\Entity\UserCreditHistory', 'a')
->leftJoin(
'User\Entity\User',
'u',
\Doctrine\ORM\Query\Expr\Join::WITH,
'a.user = u.id'
)
->where('u = :user')
->setParameter('user', $users)
->orderBy('a.created_at', 'DESC');
يسترجع هذا الاستعلام السجلات من كلا الجدولين ويعيد مجموعة نتائج تحتوي على صفائف بالتنسيق التالي: صفيف (
صفيف (
0 => مثيل UserCreditHistory،
1 => مثيل المستخدم،
)،
صفيف (
0 => مثيل UserCreditHistory،
1 => مثيل المستخدم،
)،
// ...
)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3