【发布时间】:2021-09-13 10:06:30
【问题描述】:
我已经写了这段 SQL 代码
SELECT drugs.*, COUNT(*) as 'views' from drugs INNER JOIN drug_seen on drugs.id = drug_seen.drug_id GROUP BY drugs.id order by views ASC
现在我正在尝试在 Laravel equolent 中写入,但我遇到了一些麻烦。 这是我尝试过的
$drugs = Drug::select(DB::raw('drugs.*,count(*) as views'))
->join('drug_seen', 'drugs.id', 'drug_seen.drug.id')
->groupBy('drug.id')->orderByRaw('views');
我遇到了诸如未找到列之类的错误,我认为代码编写不正确
药物类
class Drug extends Model
{
use HasFactory;
use SoftDeletes;
...
...
...
public function drugVisits()
{
return $this->hasMany(DrugSeen::class);
}
【问题讨论】:
-
如果你真的想使用 Eloquent,你必须使用
Drug模型和 Eloquent API,这段代码仍然使用低级 DB API 的太多原始查询。您能否分享您的Drug模型课程并详细说明您的意图?仅通过 SQL 查询很难知道您想要什么。 -
@RobinDeSchepper 刚刚编辑了它
-
@Thymeleaf,你遇到了哪个错误,你能显示完整的错误吗
-
你写的sql能用吗?因为我认为它会抛出错误
-
@workservice 是的,sql 工作得很好