我想运行一个存储在Laravel变量中的sql查询。只需运行$this->db->sql($sql)
,在CodeIgniter中确实很容易做到。我想知道Laravel中是否有这种方法。
$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)
执行它,但是我猜不是那样。
编辑:
使用以下命令工作正常,但我仍然想知道是否可以通过运行$this->db->query($sql)
来像在CI中那样运行。
$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();
答案 0 :(得分:2)
您可以使用此
$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]);
答案 1 :(得分:0)
在模型中创建雄辩的关系。如果模型之间存在关系,则不必创建长的SQL查询。您可以参考他们的文档。真的很容易理解。 https://laravel.com/docs/5.6/eloquent-relationships
答案 2 :(得分:0)
尝试一下:
$rows = DB::select(
DB::raw($sql, array($stringids))
);