Я пытаюсь написать этот запрос с помощью Laravel Orm, чтобы использовать загрузку, но не получаю его.

SELECT p.* FROM tbl_posts as p,tbl_posts_requests as pr WHERE p.post_status='active' AND (p.post_id=pr.request_post_id OR p.post_private='no' )

У меня есть таблица комментариев, чтобы загрузить ее, но я не могу создать версию ORM для laravel.

-1
mohit 29 Ноя 2019 в 22:17
2
Непонятно, почему вы хотите использовать здесь активную загрузку. Активная загрузка происходит для моделей Eloquent с определенными отношениями. Но в приведенном выше запросе не указано, что вы хотите получить информацию из объединенной таблицы. Вы просто получаете информацию с p. *.
 – 
MarkSkayff
29 Ноя 2019 в 22:27
Жадная загрузка здесь не добавляется. Я буду использовать нетерпеливую загрузку, как только она будет преобразована в запрос ORM.
 – 
mohit
29 Ноя 2019 в 22:28
Ничего особо сложного здесь нет. Посмотрите на where биты p и whereHas на биты pr. OR обрабатывается вложенностью $query->where(function($query) { ... }).
 – 
ceejayoz
29 Ноя 2019 в 22:29

1 ответ

Загрузка Eloquent ORM происходит для моделей Eloquent с определенными отношениями.

Итак, если у вас есть отношение tbl_posts_requests в вашей модели Posts, это может быть что-то вроде этого:

Posts::where(['post_status' => 'active', 'post_private'=>'no'])->with('tbl_posts_requests')->get();

Я предполагаю, что вы вызвали свою функцию отношений tbl_posts_requests там.

0
MarkSkayff 29 Ноя 2019 в 22:31
Я не хочу загружать запросы сообщений /
 – 
mohit
29 Ноя 2019 в 22:47
Правильно передайте аргументы внутри where function
 – 
ManojKiran Appathurai
30 Ноя 2019 в 09:58