mysql - 将此 mysql 查询转换为 Laravel Eloquent
问题描述
我是 Laravel 的绝对新手,我正在尝试将我的网站移植到这个新框架中。我有这个让我头疼的查询,我很想将它转换为 Eloquent 格式,以便我可以在我的控制器上使用它。
// It makes sure that you don't get as result yourself nor the people you already follow.
//I dont even know how much time I spent on this...
$query = mysqli_query($conn , " SELECT username, avatar_url FROM users
WHERE username LIKE '%".$username."%' AND username <>'".$user."'
except SELECT u.username, u.avatar_url FROM users as U JOIN followers AS F
ON U.id = F.followed_user_id
where following_user_id = ( select id from users where username='".$user."' );");
编辑:我已经制作了这样的第一部分:DB::table("users")->where("username", "LIKE", "%$search_people%")->where("username", '<>', $user->username)->get();
它可以工作,但我无法处理除此之外的部分。我有一个名为 $user 的变量,用于存储用户 ID,以便简化最后一个 WHERE。我写了这样的东西,但它完全关闭了:
DB::table("users")->where("username", "LIKE", "%$search_people%")
->where("username", '<>', $user->username) /*next part is wrong*/
->except("$user->username", "$user->avatar_url")
->join("followers", "followers->followed_user_id", "=", "$user->id")
->where("following_user_id", "=", "$user->id");
EDIT2:我试图把它分成两个查询。有什么办法可以将两者相交吗?
我需要 A 减 B。
$result_a = DB::table("users")->where("username", "LIKE", "%$search_people%")
->where("username", '<>', $user->username);
$result_b = DB::table("users")->select("username", "avatar_url")
->join("followers", "followers.followed_user_id", "=", "users.id" )
->where("following_user_id", "=", "$user->id")->get();