laravel数据库查询如何优雅简洁的设置表别名
在使用laravel的数据库操作时 表的别名主要通过user as u1
或者$tablename = (new model())->getTable()
的方式设置,感觉不够优雅(每次都需要额外定义变量),现在的用法:
$userTable = $this->getTable();
$bookTable = (new BookModel())->getTable();
$this->getDB()
->select('查询字段')
->leftjoin($bookTable, $thisTable . ' . book_id', $bookTable . '.id')
因此想问下在laravel原有机制里面有优雅简洁的实现方式吗 之前用过Yii2的查询:
UserModel::find()
->select('这里是查询的字段')
->alias('usermodel表的别名')
->lefjoin(['bookmodel别名'=>BookModel::tableName()])
Laravel中有类似的alias
方法和通过数组取别名的方法吗,或者如果要自定义实现,需要怎么去设计
既然用model了,为何不直接用model的关联?我看很多人用model还写这种关联,有点不明白。复杂的语句不是可以用DB么?
如果想只使用一个sql语句查出所有数据,就使用左联或右联。 但我从来都不这样做,我都是先查出模型,再查其他需要输出的字段。
推荐使用子连接查询来设置别名,参考官方例子:
可以通过laravel的 scope或者别的机制自己封装一下 例如scope机制的