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
。