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

时间:2017-04-17 16:50:45

标签: php mysql database laravel

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

我在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",
},

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

这是它的工作原理:

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

注意:对于具有相同名称的字段,请按以下方式使用:' table.field'