Php 在laravel中执行此查询的最佳方式是什么?
我正在从事我在laravel的第一个项目,现在我执行搜索功能,但是,我正在执行一个查询,其中涉及几个左连接,搜索时会返回一些冗余信息 相关的表是这四个,查询如下: 我尝试的是,当按专业做好准备时,按姓名或专业(这是一个医生页面)列出用户,一切都很顺利。但当我想按用户列出时,左键可以加入“用户专业”和“专业详细信息”。这让我多次返回用户 例如:Php 在laravel中执行此查询的最佳方式是什么?,php,mysql,sql,laravel,search,Php,Mysql,Sql,Laravel,Search,我正在从事我在laravel的第一个项目,现在我执行搜索功能,但是,我正在执行一个查询,其中涉及几个左连接,搜索时会返回一些冗余信息 相关的表是这四个,查询如下: 我尝试的是,当按专业做好准备时,按姓名或专业(这是一个医生页面)列出用户,一切都很顺利。但当我想按用户列出时,左键可以加入“用户专业”和“专业详细信息”。这让我多次返回用户 例如: public function testApi(Request $request) { $users = ProfessionalDetail:
public function testApi(Request $request)
{
$users = ProfessionalDetail::searchByNameAndSpe("joshi", 10);
$i = 0;
if ($users) {
foreach ($users as $key => $value) {
$response["result"][] = $value;
$response["total"] = $i++;
}
} else {
return "error";
}
return $response;
}
返回:
{"result":[{"user_id":204,"first_name":"Joshi","last_name":"Mohit","profile_pic":"1495436016.jpg","name":"Skin Specialist","city_name":"Pune","avg_ratings":"0.00"},{"user_id":204,"first_name":"Joshi","last_name":"Mohit","profile_pic":"1495436016.jpg","name":"Heart Specialist","city_name":"Pune","avg_ratings":"0.00"},{"user_id":204,"first_name":"Joshi","last_name":"Mohit","profile_pic":"1495436016.jpg","name":"ENT Specialist","city_name":"Pune","avg_ratings":"0.00"},{"user_id":204,"first_name":"Joshi","last_name":"Mohit","profile_pic":"1495436016.jpg","name":"Kidney Specialist","city_name":"Pune","avg_ratings":"0.00"},{"user_id":204,"first_name":"Joshi","last_name":"Mohit","profile_pic":"1495436016.jpg","name":"Eye Specialist","city_name":"Pune","avg_ratings":"0.00"}],"total":4}
Joshi只注册了一次,但我知道他会因为“多对多”的关系而被多次返回,因为他拥有多个专业
现在,为了让它按专业和用户名称进行搜索,我知道的唯一方法是使用左连接,我认为分离信息的方法是在控制器中处理数组的信息,但是我想知道这是否可以在查询中解决,因为我对SQL知之甚少,如果有任何方法,我将非常感激,因为这将节省我调试所有信息的许多步骤
每个模型的方法
用户专业表
public function users() {
return $this->belongsToMany('App\User', 'user_speciality', 'speciality_id', 'user_id');
}
使用者
特长
public function users() {
return $this->belongsToMany('App\User', 'user_speciality', 'user_id', 'speciality_id');
}
专业明细表
public function user(){
return $this->belongsTo("App\User");
}
按用户id创建“重试一次”组
groupBy(user_id)您为这些表设置了模型吗?如果每个表都有对应的关系方法,我已经修改了帖子并添加了它们
public function users() {
return $this->belongsToMany('App\User', 'user_speciality', 'user_id', 'speciality_id');
}
public function user(){
return $this->belongsTo("App\User");
}