Как разрешить этот красноречивый запрос Laravel и управлять имPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как разрешить этот красноречивый запрос Laravel и управлять им

Сообщение Anonymous »

У меня трудно правильно управлять красноречивым запросом Laravel. Когда я обычно создаю запрос и запускаю его, он работает правильно.(select `c`.*, `ca`.*, CONCAT('http://127.0.0.1:8000/uploads/advertisement/', ca.video_upload) as video_url, `campion_videos`.`video_duration` as `totalVideoDuration` from `campion_videos` inner join `campions` as `c` on `c`.`id` = `campion_videos`.`campion_id` left join `client_advertisements` as `ca` on in(ca.id, campion_videos.ads_obj_id) where `campion_id` = 14 and `ca`.`status` = 1;)
< /code>
Я создал три таблицы: < /p>
Таблица 1: Campions
Таблица 2: campion_videos

Таблица 3 : client_advertisements < /p>
Внутреннее соединение применяется для связи таблицы Campion с таблицей Campion_videos, чтобы получить соответствующие данные. После этого применяется левое соединение для получения данных из таблицы Client_Advertisements, которая содержит разделенные запятые значения из таблицы ADS_OBJ_ID в таблице campion_videos. < /P>
Я отображаю записи из всех трех таблиц с Следующие сопоставления: < /p>

campions < /p>
Эта запись предназначена для этого Таблица: < /p>
INSERT INTO `campions` (`id`, `campion`, `start_datetime`, `end_datetime`, `campaign_duration`, `winner_declare_date`, `winning_amount`, `description`, `status`, `created_at`, `updated_at`) VALUES
(14, 'Digital Marketing Demo', '2025-02-25 05:00:00', '2025-02-25 06:00:00', 3600, '2025-02-25 07:00:00', 250, 'Digital Marketing Demo', 1, '2025-02-19 11:58:13', '2025-02-19 11:58:13');
< /code>
< /li>
campion_videos.
Эта запись предназначена для этой таблицы: < /p>
INSERT INTO `campion_videos` (`id`, `campion_id`, `status`, `ads_obj_id`, `video_duration`, `created_at`, `updated_at`) VALUES (8, 14, 1, '7,1', 75, '2025-02-19 11:59:21', '2025-02-19 11:59:21')
< /code>
< /li>
client_advertisements < /p>
Эта запись предназначена для этой таблицы: < /p>
INSERT INTO `client_advertisements` (`id`, `client_id`, `priority`, `schedule_time`, `end_time`, `video_duration`, `video_upload`, `description`, `status`, `created_at`, `updated_at`) VALUES
(1, 3, 1, '2025-02-11 00:01:00', '2025-02-28 19:58:00', 45, '1739282582169946039548652391.mp4', 'Marketers must work collaboratively with their enterprise counterparts to develop, deliver and communicate their value offerings to their customers over relevant engagement channels', 1, '2025-02-01 09:00:10', '2025-02-19 11:02:33'),
(7, 1, 2, '2025-02-11 20:05:00', '2025-02-28 20:06:00', 30, '17392821101699460459file_example_MP4_480_1_5MG.mp4', 'Chetu is a US-based software development company providing businesses worldwide with tailored software solutions from industry specialized developers.', 1, '2025-02-01 09:06:36', '2025-02-11 08:33:51'),
< /code>
Функция find_in_set работает со значениями, разделенными запятыми. их против стола campion_videos. Что должно произойти, так это то, что он должен сначала забрать таблицу ADS_OBJ_ID (идентификаторы, разделенные с запятой), а затем получить соответствующие записи из таблицы Client_Advertisements на основе этих идентификаторов. < /P>
Создал следующий запрос Laravel, но он неправильно функционирует: < /p>
$videoPath = asset('uploads/advertisement');

$campaignVideoList = CampionVideo::where('campion_id', $id)
->join('campions as c', 'c.id', '=', 'campion_videos.campion_id')
->leftJoin('client_advertisements as ca', function($join) {
$join->where('ca.id', DB::raw('FIND_IN_SET(ca.id, campion_videos.ads_obj_id)'));
})
->where('ca.status', 1)
->select('c.*', 'ca.*', DB::raw("CONCAT('{$videoPath}/', ca.video_upload) as video_url"), 'campion_videos.video_duration as totalVideoDuration')
->get();
print_r($campaignVideoList);die;
< /code>
< /li>
< /ol>
Правильный поиск данных: вы ожидали, что запросы SQL и LARAVE , campion_videos и client_advertisements) точно. Значения ads_obj_id из таблицы Campion_videos с использованием функции find_in_set.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -manage-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»