Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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 雄辩地获得一份独特的患者id列表';她在约会桌上_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php 雄辩地获得一份独特的患者id列表';她在约会桌上

Php 雄辩地获得一份独特的患者id列表';她在约会桌上,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有一个平台,有牙医与用户预约 我想知道是否有可能根据预约数据得到这位牙医的患者名单 这是我的预约表布局 +------------+------------+------------+ | patient_id | dentist_id | date | +------------+------------+------------+ | 1 | 2 | 12/02/2017 | | 1 | 2 | 13/02

我有一个平台,有牙医用户预约

我想知道是否有可能根据预约数据得到这位牙医的患者名单

这是我的预约表布局

+------------+------------+------------+
| patient_id | dentist_id |    date    |
+------------+------------+------------+
|          1 |          2 | 12/02/2017 |
|          1 |          2 | 13/02/2017 |
|          2 |          2 | 10/02/2017 |
+------------+------------+------------+
可以使用foreach并用结果填充数组并检查unique,但是应该有一种更优雅的方法,对吗

对我来说更困难的是,我应该能够看到每个患者最后一次预约的日期

更新 由于答案中的代码,下面的工作正常。但是看到这个似乎很奇怪

{{ $patient->appointments()->where('dentist_id', Auth::user()->dentist->id)->orderBy('date', 'desc')->first()->date }}
您可以使用以确保您的数据是唯一的

如果您的雄辩模型关系设置正确,您可以执行以下操作:

<?php

    $patients = $dentist->appointments()
        ->with('patient')
        ->get()
        ->pluck('patient')
        ->unique('id');
您可以使用以确保您的数据是唯一的

如果您的雄辩模型关系设置正确,您可以执行以下操作:

<?php

    $patients = $dentist->appointments()
        ->with('patient')
        ->get()
        ->pluck('patient')
        ->unique('id');
您可以执行以下操作:

SELECT patient_id, MAX(date)
FROM Appointments 
GROUP BY patient_id;
或者在拉威尔:

DB::table("Appointments")
    ->join("user","user.id","=","Appointment.patient_id")
    ->select("user.id")
    ->select("user.name")
    ->select(DB::raw("MAX(date)")
    ->groupBy("user.id, user.name");
如果您需要更多信息,如姓名等,还可以通过患者id上的用户表加入。

您可以执行以下操作:

SELECT patient_id, MAX(date)
FROM Appointments 
GROUP BY patient_id;
或者在拉威尔:

DB::table("Appointments")
    ->join("user","user.id","=","Appointment.patient_id")
    ->select("user.id")
    ->select("user.name")
    ->select(DB::raw("MAX(date)")
    ->groupBy("user.id, user.name");

如果您需要更多信息,如姓名等,也可以通过患者id上的用户表加入。

太棒了!Pulk甚至返回一个模型?我不知道!你知道我奖金问题的答案吗?我猜这是一个单独的查询?太棒了!Pulk甚至返回一个模型?我不知道!你知道我奖金问题的答案吗?我猜这是一个单独的查询?啊哈,太好了!也在工作,但这只是返回的最大(日期),这是完美的!但是有可能获得其他患者的数据吗?我尝试了->选择('*,…),但不起作用。@Notflip更新了一个可能起作用的连接。我认为把这句话翻译成雄辩的话可能是很理想的,但我不知道是否有一种直接的方法可以做到这一点。啊哈,用你的答案的修改版本。我也会把它添加到我的问题中。嗯,问题是,我选择的每个字段都必须在组中?这正常吗?@Notflip SQL标准要求所有非聚合字段(粗略地说)都是分组的一部分。MySQL 5.7+默认符合此标准。我认为laravel在数据库配置中有一个名为
strict
的标志。如果不想发生这种情况,可以将其设置为
false
。啊哈,太好了!也在工作,但这只是返回的最大(日期),这是完美的!但是有可能获得其他患者的数据吗?我尝试了->选择('*,…),但不起作用。@Notflip更新了一个可能起作用的连接。我认为把这句话翻译成雄辩的话可能是很理想的,但我不知道是否有一种直接的方法可以做到这一点。啊哈,用你的答案的修改版本。我也会把它添加到我的问题中。嗯,问题是,我选择的每个字段都必须在组中?这正常吗?@Notflip SQL标准要求所有非聚合字段(粗略地说)都是分组的一部分。MySQL 5.7+默认符合此标准。我认为laravel在数据库配置中有一个名为
strict
的标志。如果不希望发生这种情况,可以将其设置为
false