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_at
和 updated_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'
所以,我需要在 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_at
和 updated_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'