将URS用户绑定关系列表中的"农场用户ID"列改为"农场用户"列,显示用户ID和昵称信息。
文件: app/Module/UrsPromotion/Repositorys/UrsUserMappingRepository.php
/**
* 获取查询构建器,预加载关联数据
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function getQueryBuilder()
{
return parent::getQueryBuilder()->with(['user.info']);
}
说明: 预加载用户及其详细信息,避免N+1查询问题,提升性能。
文件: app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php
$grid->column('user_id', '农场用户')->sortable()->display(function ($value) {
if (!$value) return '<span class="text-muted">未绑定</span>';
// 获取当前行的模型数据
$model = $this;
// 获取用户昵称
$nickname = $model->user && $model->user->info ? $model->user->info->nickname : '';
$displayText = $value;
if ($nickname) {
$displayText .= '<br><small class="text-success">' . $nickname . '</small>';
}
// 添加到收益记录的链接
$profitUrl = admin_url('urs-promotion/profits?farm_user_id=' . $value);
$displayText .= '<br><small>
<a href="' . $profitUrl . '" class="text-info">查看收益记录</a>
</small>';
return $displayText;
});
关键点:
$this指向当前行的数据对象$model->user->info->nickname获取用户昵称$this指向当前行的数据对象getQueryBuilder()方法预加载关联数据优化URS用户绑定关系列表农场用户列显示
- 将农场用户ID列改为农场用户列
- 显示用户ID和昵称信息
- 昵称以绿色小字显示在ID下方
- 保留查看收益记录链接功能
- 在Repository中预加载用户关联数据以提升性能
app/Module/UrsPromotion/Repositorys/UrsUserMappingRepository.php - 添加预加载关联数据app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php - 修改列显示逻辑问题: 访问详情页面时出现ArgumentCountError错误 错误信息: "Too few arguments to function App\Module\UrsPromotion\Models\UrsUserMapping::App\Module\UrsPromotion\AdminControllers{closure}(), 1 passed and exactly 2 expected"
原因分析:
as方法回调函数只接收一个参数$value($value, $model)$this指向当前模型对象修复方案:
// 修复前(错误)
$show->field('related_links', '相关链接')->unescape()->as(function ($value, $model) {
// ...
});
// 修复后(正确)
$show->field('related_links', '相关链接')->unescape()->as(function ($value) {
// 在Show页面的as方法中,$this指向当前模型对象
$model = $this;
// ...
});
验证结果: 详情页面正常显示,相关链接功能正常工作。
function ($value) { $model = $this; }function ($value) { $model = $this; }$this获取当前模型对象,但参数定义不同$this获取模型对象是通用做法任务完成,用户体验得到显著提升,详情页面报错已修复。