@kirill-93

Как использовать ORM в данном случае?

Здравствуйте, столкнулся с проблемой в laravel 4, гугл не помогает.
Запрос вида
DB::table('user')->leftJoin('payments', function($join) {
            $join->on('entity_type', '=', 'salary')
                 ->on('entity_id', '=', 'user.id')
        })->get()

Выдает ошибку, где говорит что не найдено поле salary. А мне нужно сравнить именно со строкой. В гугле первым делом пишут, что нужно в этом случае эту строку передавать в анонимную функцию через use. Пробовал, та же ошибка. Что я делаю не так? Именно на джоинах так, на where все работает. Приходится писать сырыми запросами в таких случаях. Помогите.
  • Вопрос задан
  • 2427 просмотров
Решения вопроса 1
Описание метода:
public function on($first, $operator, $second, $boolean = 'and', $where = false) {}

Тогда чтоб второй параметр трактовался как значение, а не поле нужно $where указать true
DB::table('user')->leftJoin('payments', function($join) {
            $join->on('entity_type', '=', 'salary', 'and', true)
                 ->on('entity_id', '=', 'user.id')
        })->get()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kostia256
@kostia256
Про laravel не в курсе, но можно в WHERE прописать условие `payments`.`entity_type` = 'salary', не обязательно в ON. Сам сталкивался с такой проблемой на днях в другом фреймворке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы