MySQL 表中的同名字段相互覆盖 - Laravel

Same name field in MySQL tables overwrite each other - Laravel

所以,我需要在 2 tables - 项目和类别之间进行连接。

我在 Laravel 中编码,这是我所拥有的:

$items = DB::table('items')
            ->join('categories', 'categories.id', '=', 'items.category_id')
            ->get();

然后我得到如下结果:

{
  id: 3,
  barcode: "0002",
  category_id: "4",
  price: 200,
  in_use: 1,
  serial_number: 1112,
  model: "Toshiba",
  condition_id: 3,
  person_id: 1,
  comments: "A monitor that is usually connected to a laptop.",
  created_at: "2017-03-28 19:50:02",
  updated_at: "2017-03-28 19:50:02",
  name: "monitor",
},
{
  id: 3,
  barcode: "0003",
  category_id: "4",
  price: 300,
  in_use: 1,
  serial_number: 11342,
  model: "Toshiba",
  condition_id: 3,
  person_id: 1,
  comments: "A monitor that is usually connected to a laptop.",
  created_at: "2017-03-28 19:50:02",
  updated_at: "2017-03-28 19:50:02",
  name: "monitor",
},

两个 table 都有一些同名的字段,例如 id created_atupdated_at。 问题在于,因为它们具有相同的名称,所以一个 table 的值会覆盖另一个 table 的值。 当第二个 table 值具有相同的列名时,如何获取不覆盖第一个值的值? 或者,更好的是,我如何(从两个 table 中)取回两个值? 也许以某种方式使用 AS 关键字?

感谢您的帮助。

是的,您应该为每个重复字段使用 AS 关键字

它是这样工作的:

$items = DB::table('items')
        ->join('categories', 'categories.id', '=', 'items.category_id')
        ->select('field1', 'field2 as field2name', 'field3')
        ->get();

注意:对于同名的字段,这样使用:'table.field'