Laravel不存在的地方

编程入门 行业动态 更新时间:2024-10-25 02:20:55
本文介绍了Laravel不存在的地方的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有人可以告诉我我的laravel查询中可能有什么错误,基本上我想要列出的是ID与另一个表无关的表的记录.我使用以下查询在Mysql中完成了此操作:SELECT * FROM不存在的项目(SELECT等级为空,而grades.item_id = item.id和qualifications.user_id = 2)

但是现在我需要在laravel中执行相同的查询,我以这种方式尝试了它: codigo

我得到的是这个语法错误,我不知道该如何解决了:错误

我非常感谢能告诉我我做错了什么,或者我在Laravel中以哪种形式进行查询的人.

解决方案

您也可以像

一样将查询重写为左连接

SELECT i.*从项目我左联接资格q ON q.item_id = i.id AND q.user_id = 2q.item_id为NULL的位置

在查询构建器中,您可以将其编写为

DB :: table('item as i')->选择('i.*')-> leftJoin('qualification as q',qualities as q',function($ join)use($ user_id){$ join-> on('q.item_id','=','i.id')-> on('q.user_id','=',$ user_id);})-> whereNull('q.item_id')-> get();

我建议您使用的另一种方法是建立关系和模型,并雄辩地做到这一点

class项目扩展模型{公共职能资格{返回$ this-> hasMany(\ App \ Models \ Qualification :: class,'item_id');}}班级资格扩展模型{公共职能资格{返回$ this-> belongsTo(Item :: class,'item_id');}}

然后您可以使用查询关系缺失

Item :: whereDoesntHave('qualifications',function($ query)use($ user_id){$ query-> where('user_id','=',$ user_id);})-> get();

Could anybody tell me what error I might have in my laravel query, basically what I want is to list the records of a table whose id is not related in another table. I did it in Mysql with this query: SELECT * FROM item WHERE NOT EXISTS (SELECT null FROM qualifications WHERE grades.item_id = item.id AND qualifications.user_id = 2);

but now I need to do this same query in laravel, I tried it this way: codigo

and what I get is this syntax error that I do not know how to solve anymore: error

I am very grateful to anyone who can tell me what I am doing wrong, or in what form I make that query in Laravel.

解决方案

You can also rewrite your query as left join like

SELECT i.* FROM item i LEFT JOIN qualifications q ON q.item_id = i.id AND q.user_id = 2 WHERE q.item_id IS NULL

In query builder you can write it as

DB::table('item as i') ->select('i.*') ->leftJoin('qualifications as q', function ($join) use($user_id) { $join->on('q.item_id', '=', 'i.id') ->on('q.user_id', '=', $user_id); }) ->whereNull('q.item_id') ->get();

Another approach which i suggest you to go with, is setup your relations and models and do it with eloquent way

class Item extends Model { public function qualifications() { return $this->hasMany(\App\Models\Qualification::class, 'item_id'); } } class Qualification extends Model { public function qualifications() { return $this->belongsTo(Item::class, 'item_id'); } }

And then you can use Querying Relationship Absence

Item::whereDoesntHave('qualifications', function ($query) use($user_id) { $query->where('user_id', '=', $user_id); })->get();

更多推荐

Laravel不存在的地方

本文发布于:2023-10-18 10:42:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1503998.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不存在   地方   Laravel

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!