Как сделать предложение where
, основанное на существующем поле в базе данных, а не на входном параметре?Laravel: где условие на основе поля db
$query = DB::table('events')
->join('events_dates', function($join) use ($data){
$join->on('events.id', '=', 'events_dates.event_id');
$join->where('events_dates.start_date', "<=", $data['date_end']);
$join->where('events_dates.end_date', '>=', $data['date_start']);
});
Это хорошо работает, потому что предложение where основано на входном параметре.
Что мне нужно, это где положение, которое основано на поле, которое уже находится в базе данных:
Что-то вроде этого:
$query = DB::table('events')
->join('events_dates', function($join) use ($data){
$join->on('events.id', '=', 'events_dates.event_id');
//If db field of record: recurrent == 0 then
$join->where('events_dates.start_date', "<=", $data['date_end']);
$join->where('events_dates.end_date', '>=', $data['date_start']);
/* If db field of record: "recurrent" == "1" then
$join->where //another query
*/
});
Является ли это достижимо с Laravel ОРМ, или я должен написать собственный SQL-запрос?
Не нашли подходящего ответа в документах или в существующих сообщениях.
Хорошо, следует ли использовать гнездо, где в рамках условия соединения выполнить требование, заданное в вопросе? Я сделаю несколько тестов, чтобы узнать, как это работает. – Trace
Это в основном вопрос, который вы разместили [здесь] (http://stackoverflow.com/q/27707974/1903366) правильно? Я посмотрю на него и отвечу туда, если найду решение. Это довольно не в тему (с учетом названия вопроса) – lukasgeiter
Да, это относится к одному и тому же вопросу, но я предположил, что предыдущий вопрос может быть недостаточно простым. Спасибо за ваши усилия, я искал несколько часов сегодня, но до сих пор не мог понять это. – Trace