2014-12-30 3 views
1

Как сделать предложение 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-запрос?
Не нашли подходящего ответа в документах или в существующих сообщениях.

ответ

0

Вы должны использовать ...

where('column1', '=', DB::raw('column2')); 

... использовать значение поля вместо строки "COLUMN2".

В this answer Я далее объяснил, почему.

+0

Хорошо, следует ли использовать гнездо, где в рамках условия соединения выполнить требование, заданное в вопросе? Я сделаю несколько тестов, чтобы узнать, как это работает. – Trace

+0

Это в основном вопрос, который вы разместили [здесь] (http://stackoverflow.com/q/27707974/1903366) правильно? Я посмотрю на него и отвечу туда, если найду решение. Это довольно не в тему (с учетом названия вопроса) – lukasgeiter

+0

Да, это относится к одному и тому же вопросу, но я предположил, что предыдущий вопрос может быть недостаточно простым. Спасибо за ваши усилия, я искал несколько часов сегодня, но до сих пор не мог понять это. – Trace

Смежные вопросы