"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل الخطأ \"المبدأ المتوقع\\ORM\\Query\\Lexer::T_WITH، حصلت على \'ON\'\" خطأ أثناء الانضمام الأيسر في Doctrine؟

كيفية حل الخطأ \"المبدأ المتوقع\\ORM\\Query\\Lexer::T_WITH، حصلت على \'ON\'\" خطأ أثناء الانضمام الأيسر في Doctrine؟

تم النشر بتاريخ 2024-11-08
تصفح:899

How to Resolve the \

كيفية تنفيذ الصلات اليسرى في العقيدة

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

المشكلة التي تمت مواجهتها

يتم تلقي خطأ شائع قد ينشأ عند محاولة الانضمام الأيسر في 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