Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon يمكن استخدام التحميل مع العلاقات المتداخلة


يمكن استخدام التحميل مع العلاقات المتداخلة


نعم ، يمكن استخدام "loadmissing" مع العلاقات المتداخلة في Laravel ، ولكن هناك بعض الفروق الدقيقة التي يجب أن تكون على دراية بها.

ما هو "loadmissing"؟

يتم استخدام طريقة "loadmissing" في بليغة laravel لتتوق العلاقات عن الحمل فقط إذا لم يتم تحميلها بالفعل على مثيل النموذج. يساعد هذا في تجنب الاستعلامات الزائدة عن طريق التحقق مما إذا كانت بيانات العلاقة موجودة بالفعل قبل الاستعلام عن قاعدة البيانات مرة أخرى [6].

باستخدام "loadmissing" مع العلاقات المتداخلة

- يمكنك تحديد العلاقات المتداخلة في تدوين DOT مع "loadmissing" ، مثل "المؤلف. contacts" ، لتحميل علاقة متداخلة فقط إذا كانت مفقودة [7].
- ومع ذلك ، هناك سلوك معروف حيث إذا كنت "loadmissing" علاقة متداخلة لعلاقة تم تحميلها بالفعل ، فقد يعيد صياغة العلاقة الوالدية نفسها. على سبيل المثال ، إذا كنت قد قمت بالفعل بتحميل "نقوش" على نموذج ، فإن استدعاء `loadmissing ('inscriptions.nestedRelation')` سوف يتسبب في علاقة "النقوش" بإعادة التحميل بالكامل [1].
- هذا يعني أنه على الرغم من أن "loadmissing" يدعم العلاقات المتداخلة ، إلا أنه يمكن أن يؤدي إلى إعادة تحميل العلاقات المتوسطة إذا تم تحميلها مسبقًا ولكن بدون علاقة متداخلة.

اعتبارات عملية

- "loadmissing" مفيد عندما تريد أن تتوق بشكل مشروط إلى علاقات التحميل ، مما يمنع الاستعلامات المكررة إذا تم تحميل العلاقة بالفعل.
- بالنسبة للعلاقات المتداخلة ، يجب أن تدرك أن تحميل علاقة متداخلة مفقودة من علاقة الوالدين المحملة مسبقًا قد يتسبب في إعادة التحميل ، والتي يمكن أن تؤثر على الأداء.
- إذا كنت ترغب في تجنب عمليات إعادة التحميل هذه ، فقد تحتاج إلى الإدارة بعناية متى وكيف تقوم بتحميل العلاقات المتداخلة أو التفكير في تحميلها مقدمًا مع `with ()`.

ملخص

- نعم ، يمكن استخدام "loadmissing" مع العلاقات المتداخلة باستخدام تدوين DOT.
- إنه يحمل العلاقات المتداخلة فقط إذا كانت مفقودة.
- ولكن إذا تم تحميل العلاقة الوالدية دون العلاقة المتداخلة ، فيجوز "loadmissing" إعادة تحميل العلاقة الوالدية لجلب البيانات المتداخلة [1] [6] [7].

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

الاستشهادات:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nested-nerelation-in-graphql
[3]
[4] https://github.com/fifemon/graphql-datasource/issues/15
[5] https://www.sea-ql.org/sea-orm-cookbook/001-how-to-load-nested-nered.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-puroph-of-the-loadmissing-function
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eager-oving-of-multiple-nested-nerationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-ieries