laravel - 为什么我不能急切地加载我关联的客户详细信息?
问题描述
我在我的 Laravel 应用程序中创建了一个方法来获取我的Queue
模型及其相关User
模型。
这是我的 Queue.php 模型的样子:
class Queue extends Model
{
public function customer()
{
return $this->belongsTo('App\User');
}
...
这是我的控制器的样子:
public function showQueue(Request $request)
{
$key = $request->session()->get('session_key');
return $queue = Queue::where('session_id', $key)->with('customer')->get();
...
当我这样做时,这就是我的控制器返回的内容:
[
{
"id": 37,
"user_id": 2,
"queue_entry_time": "2020-08-09 02:17:07",
"created_at": "2020-08-09T01:17:07.000000Z",
"updated_at": "2020-08-09T01:17:07.000000Z",
"session_id": "ctwr4oqn7v4808oow8sooggosc04wk0",
"customer": null
}
]
客户属性为空,但客户实际上只是一个用户(模型),可以看到user_id下存在一个ID,并且在数据库中有与该ID存在的记录。
为什么customer
属性为空?
解决方案
可能是因为它被 laravel 本身错误地映射了。对于您的关系,它将customer_id
像官方文档所说的那样解决:
Eloquent 通过检查关系方法的名称并在方法名称后加上 _id 来确定默认的外键名称。
因此,您必须设置关系的第二个参数,该参数指定队列实体的外键名称。
return $this->belongsTo('App\User', 'user_id');
推荐阅读
- csv - SAS:在 Sas 中读取 CSV 文件:添加字符日期为 0
- sql - 使用 Panache 选择字符串包含子字符串的位置
- java - 使用 Java 在 Excel 中的给定占位符之间进行迭代
- spring-boot - 合并两个查询以进行分页
- php - 使用 PHP 从 API 中提取数据
- regex - 正则表达式数字金额验证
- javascript - 忽略负鼠断路器中的 HTTP 404 错误?
- javascript - javascript中的双问号与&&
- sql - 查询 15 天内的患者总数
- sql-server - SQL Server 中 SWITCH PARTITION 命令的最低用户权限是多少?