You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Yajra\DataTables中QueryDataTable::join方法不存在的问题

解决方案:Method Yajra\DataTables\QueryDataTable::join does not exist.

问题原因

  1. 语法错误:DB::table('ld_app_announcements')末尾多了一个多余的),导致Laravel查询构建器被提前终止,后续调用join()时,对象已变为QueryDataTable实例,而该类没有join方法。
  2. 调用顺序问题:数据库关联操作(如join)需在Laravel原生查询构建器上执行,不能在DataTables实例上调用。

修复后的完整代码

$annuncement_list = DB::table('ld_app_announcements')
    ->join('ld_apps', 'ld_apps.id', '=', 'ld_app_announcements.ld_app_id')
    ->addIndexColumn()
    ->addColumn('action', function($annuncement_list) {
        $btn = '';
        $btn .= '<a href="javascript:void(0)"  data-app_id = "'.$annuncement_list['id'].'" data-original-title="Edit" class="btn btn-success btn-sm edit_app">
        Edit
        </a><br> &nbsp';

        $btn .='<a href="javascript:void(0)"  data-app_id = "'.$annuncement_list['id'].'" data-original-title="Delete" class="btn btn-danger btn-sm delete_app">
        Delete
        </a> &nbsp';
        return $btn;
    })
    ->rawColumns(['action'])
    ->make(true);

额外优化建议

  • 删除按钮的类名原代码误用了edit_app,已修正为delete_app,避免JS事件绑定冲突。
  • 确认关联字段ld_apps.id与ld_app_announcements.ld_app_id的数据类型一致,避免隐式转换影响查询性能。

内容的提问来源于stack exchange,提问作者KAVAIYA RAHUL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:07:40