Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel中执行此查询的最佳方式是什么?_Php_Mysql_Sql_Laravel_Search - Fatal编程技术网

Php 在laravel中执行此查询的最佳方式是什么?

Php 在laravel中执行此查询的最佳方式是什么?,php,mysql,sql,laravel,search,Php,Mysql,Sql,Laravel,Search,我正在从事我在laravel的第一个项目,现在我执行搜索功能,但是,我正在执行一个查询,其中涉及几个左连接,搜索时会返回一些冗余信息 相关的表是这四个,查询如下: 我尝试的是,当按专业做好准备时,按姓名或专业(这是一个医生页面)列出用户,一切都很顺利。但当我想按用户列出时,左键可以加入“用户专业”和“专业详细信息”。这让我多次返回用户 例如: public function testApi(Request $request) { $users = ProfessionalDetail:

我正在从事我在laravel的第一个项目,现在我执行搜索功能,但是,我正在执行一个查询,其中涉及几个左连接,搜索时会返回一些冗余信息

相关的表是这四个,查询如下:

我尝试的是,当按专业做好准备时,按姓名或专业(这是一个医生页面)列出用户,一切都很顺利。但当我想按用户列出时,左键可以加入“用户专业”和“专业详细信息”。这让我多次返回用户

例如:

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");
    }