Как запустить SQL-запрос, хранящийся в переменной с помощью Laravel Eloquent? - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу запустить SQL-запрос, который я храню в переменной в Laravel. Это действительно легко сделать в CodeIgniter, просто запустив $this->db->sql($sql). Интересно, есть ли такой способ в Ларавеле?

  $sql = "SELECT u.*,c.city_name,prov.province_name FROM users u ".
        "LEFT JOIN cities c ON c.city_id=u.city_id".
        "LEFT JOIN provinces prov ON prov.province_id=u.province_id".
        "WHERE u.id= ?";

Я пытался выполнить его, используя DB::table($sql), но я думаю, что это не так.

EDIT: Использование следующего работает нормально, но я все еще задаюсь вопросом, могу ли я просто запустить что-то, как я делаю в CI с запуском $this->db->query($sql).

$user = User::select('users.*','cities.city_name','provinces.province_name')
           ->where('users.id', Auth::id())
           ->leftJoin('cities','cities.city_id','=','users.city_id')
           ->leftJoin('provinces','provinces.province_id','=','users.province_id')
           ->get()->first();

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Создание красноречивых связей в моделях.При наличии связи между моделями вам не нужно создавать длинный SQL-запрос.Вы можете обратиться к их документации.Это действительно легко понять.https://laravel.com/docs/5.6/eloquent-relationships

0 голосов
/ 12 сентября 2018

Попробуйте это:

$rows = DB::select(
    DB::raw($sql, array($stringids))
);
0 голосов
/ 12 сентября 2018

Вы можете использовать это

$users = DB::select('select * from users where active = ?', [1]);

см. Документы https://laravel.com/docs/5.7/database#running-queries

, так что если вы

$sql = "SELECT u.*,c.city_name,prov.province_name FROM users u ".
        "LEFT JOIN cities c ON c.city_id=u.city_id".
        "LEFT JOIN provinces prov ON prov.province_id=u.province_id".
        "WHERE u.id= ?";

просто попробуйте

$query_result = DB::select($sql, [your parameter variable]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...