【问题标题】:Column not found: 1054 Unknown column - Laravel 5.1 Join未找到列:1054 未知列 - Laravel 5.1 加入
【发布时间】:2016-04-29 14:22:38
【问题描述】:

我有三张桌子。 work_orderscustomersaircraft。在work_orders 表中有两个字段customer_idaircraft_id。我正在尝试通过使用join 来检索customersaircraft 数据。我收到了一系列错误,但它们似乎都指向同一个方向,那就是找不到表。

这是我的WorkOrderController index

public function index(WorkOrder $workorder)
{
$workorder_array = $workorder
    ->join('work_orders as work', 'work.aircraft_id', '=', 'aircraft.id')
    ->join('work_orders as workorder', 'workorder.customer_id', '=', 'customers.id')
    ->select('work_orders.opened_date', 'customers.mobile', 'aircraft.year')
    ->get();

return view('work-orders.index', compact('workorder_array'));
}

我得到以下错误:

SQLSTATE[42S22]:未找到列:1054 'on 子句'中的未知列'aircraft.id'(SQL:从work_orders 内部连接work 中选择work_ordersopened_date on aircraft.id = work.aircraft_id 内连接 work_ordersworkorder workorder.customer_id = customers.id)

我已尝试将 work.aircraft_idaircraft.id 切换,因为 Laravel 文档按此顺序显示它,但这也没有任何区别。摆脱此错误的唯一方法是删除我的 join 语句。

【问题讨论】:

  • 您可以打开控制台并运行此 sql 查询,如果您收到错误检查表和数据库中的字段,您可以尝试获取正确的查询。对不起我的英语。
  • 只是好奇:aircraft 不应该是 aircrafts 吗?因为,Laravel 使用蛇形大小写约定来命名表。除非您已将表名明确指定为 aircraft..
  • 我指定它是飞机,因为那是飞机的复数形式。我一直在网站上的其他地方访问该表。

标签: php mysql laravel-5.1


【解决方案1】:

join 语句中的表格有误。这是我应该拥有的:

public function index(WorkOrder $workorder)
{
    $workorder_array = $workorder
        ->join('aircraft', 'work_orders.aircraft_id', '=', 'aircraft.id')
        ->join('customers', 'work_orders.customer_id', '=', 'customers.id')
        ->select('*')
        ->get();

    return view('work-orders.index', compact('workorder_array'));
}

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 2015-02-22
    • 2020-05-13
    • 2021-08-08
    • 2019-11-11
    • 1970-01-01
    • 2018-02-21
    • 2015-12-08
    相关资源
    最近更新 更多