【问题标题】:Eloquent return wrong primary key result with DatatablesEloquent 使用 Datatables 返回错误的主键结果
【发布时间】:2021-04-10 16:57:26
【问题描述】:

我对使用 Datatables 组件的雄辩结果有疑问。

这是我的代码:

$licences = Licence::with(['purchase.company', 'catalog_package.catalog', 'catalog_package.package', 'createdContact']);

return Datatables::of($licences)
    ->addColumn('actions', function (Licence $licence) {
    $ret = '<a href="'. url("/") .'/licences/edit/'. $licence->id .'" class="btn btn-info waves-effect waves-light" data-toggle="tooltip" data-placement="top" title="" data-original-title="'. ucfirst(trans("messages.edit")) .'"><i class="fa fa-list-ul"></i></a>';
        return $ret;
    })
    ->rawColumns(['actions', 'end_date'])
    ->make();

$licence-&gt;id 的结果是错误的:我希望有 1,但我得到了 2。

我认为它与关系混淆了?

我尝试在addColumn 中运行dd($licence),发现除了id 之外的所有值都是正确的。

你知道为什么吗?

提前致谢

【问题讨论】:

  • 你怎么知道1 是正确的但2 不是?我只看到一个没有任何过滤器的查询。告诉我们您在做什么(可能是分页)在哪里收到此错误。

标签: php laravel eloquent yajra-datatable


【解决方案1】:

根据 Yajra 文档,您应该在使用急切加载时将 -&gt;select('licences.*') 语句添加到您的 eloquent 查询“以避免相关模型的 id 替换主模型的 id 的奇怪问题”。

$licences = Licence::with(['purchase.company', 'catalog_package.catalog', 'catalog_package.package', 'createdContact'])->select('licences.*');

https://datatables.yajrabox.com/eloquent/relationships#:~:text=It%20is%20advised%20that%20you%20include%20select(%27table.*%27)

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 已编辑。对不起,我的坏事。
猜你喜欢
  • 1970-01-01
  • 2018-06-21
  • 2016-03-31
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多