代码之家  ›  专栏  ›  技术社区  ›  Abaij

如何用Laravel Eloquent运行存储在变量中的sql查询?

  •  1
  • Abaij  · 技术社区  · 6 年前

    我想运行一个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) 但我想不是这样的。

    使用下面的方法可以很好地工作,但是我仍然想知道我是否可以像在CI中那样运行running $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 回复  |  直到 6 年前
        1
  •  2
  •   Martin Adiputra    6 年前

    你可以用这个

    $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]);
    
        2
  •  0
  •   Gio Rodriguez    6 年前

    在模型中建立雄辩的关系。当模型之间存在关系时,不必创建长sql查询。你可以参考他们的文件。这真的很容易理解。 https://laravel.com/docs/5.6/eloquent-relationships

        3
  •  0
  •   Sociopath    6 年前

    试试这个:

    $rows = DB::select(
        DB::raw($sql, array($stringids))
    );