Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Select..in(). Сырые запросы против ORM » 24.11.2017 07:08:22

А такой вариант является ли SQL injection безопасным?
$results = DB::select('select * from users where id = ?', array(1));
Если да, то не понятно для чего тогда Конструктор запросов нужен? Вижу только дополнительный,лишний синтаксис.

#2 Re: Laravel 5.x » Select..in(). Сырые запросы против ORM » 23.11.2017 11:44:42

Спасибо за наставление). Углубился в ORM и для себя понял, что Eloquent только для простых селектов в не больших БД. Даже для данного запросика он не годен.
Собственно остановился на таком "query builder извращение" :

$answers = DB::table('answer')
  ->leftJoin('answer_type', 'answer.answer_type_id', '=', 'answer_type.answer_type_id')
  ->leftJoin('answer_image', 'answer.answer_id', '=', 'answer_image.answer_id')
  ->leftJoin(DB::raw ('(SELECT at.type as type_other, question_id, answer_id, value as other_value ' .
                  'FROM answer_other ao JOIN answer_type at ON (ao.answer_type_id = at.answer_type_id) ' .
                  'WHERE ao.question_id =" ' . (int)$question->question_id . '") ao1'), 'answer.answer_id', '=', 'ao1.answer_id')
  ->where('answer.question_id', '=', (int)$question->question_id)

Чем дальше, тем laravel нравится все меньше и меньше(((

#3 Re: Laravel 5.x » Select..in(). Сырые запросы против ORM » 22.11.2017 08:11:08

Добрый день.
Решил не создавать новых тем. Только начал изучат Laravel и возник затык при переводе своих "старых" sql запросов в "ларавель правильные"
Вот один из
SELECT a.answer_id, at.type, a.value, ao1.type_other, ao1.other_value, ai.value as image, a.hidden, a.required
FROM answer a
    LEFT JOIN answer_type at ON (a.answer_type_id = at.answer_type_id)
    LEFT JOIN answer_image ai ON (a.answer_id = ai.answer_id)
    LEFT JOIN ( SELECT at.type as type_other, question_id,answer_id, value as other_value
                FROM answer_other ao JOIN answer_type at ON (ao.answer_type_id = at.answer_type_id)
                WHERE ao.question_id = (int)$question_id
              ) ao1 ON (a.answer_id = ao1.answer_id)
WHERE a.question_id = (int)$question_id
ORDER BY a.sort_order
Как наиболее правильно это сделать? На ум приходит только raw.

Подвал раздела