[解决了]模型用一对一,只有第一条数据能关联,第二条开始就没有关联到了,可有大神帮忙看看吗?
1. 运行环境
macos 12.3.1 (21E258)
1). 当前使用的 Laravel 版本?
9.37.0
//: <> (使用 php artisan --version
命令查看)
2). 当前使用的 php/php-fpm 版本?
PHP 版本: with Zend OPcache v8.0.24, Copyright (c), by Zend Technologies
php-fpm 版本:
3). 当前系统
4). 业务环境
5). 相关软件版本
2. 问题描述?
我有一个用户表 admin
角色表(多对多 数据加载正常)
部门表(一对一 数据加载不正常),
部门一对一不正常:每个用户都有一个department_id = 1
页面图
数据返回图
admin控制器代码
public function list(Request $request): JsonResponse
{
$sort = $request->input('sort', 'created_at');
$order = $request->input('order', 'desc');
$rows = $request->input('rows', 20);
$query = Admin::query()
->with(['role','department'])
->orderBy($sort, $order)
->paginate($rows);
return success([
'count' => $query->count(),
'list' => $query->items(),
]);
}
admin模型
<?php
namespace App\Models\Company;
use DateTimeInterface;
use App\Models\BaseModel;
class Admin extends BaseModel
{
use HasFactory;
protected $guarded = [];
public function role(): BelongsToMany
{
return $this->belongsToMany(Role::class, 'admin_roles');
}
public function department(): HasOne
{
// 这里的问题
// return $this->hasOne(Department::class,'id');
//正确
return $this->hasOne(Department::class,'id','department_id');
}
}
推荐文章: