laravel 5.1 eloquent select 加入前缀 table
laravel 5.1 eloquent select with prefix joined table
我有这个问题
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->first();
我如何 select 每个 table 都带有前缀,这样我就可以这样调用 :
- $订单->customer_name
- $订单->cashier_name
对于上面的查询,我只得到一个名称行,因为每个 table 具有相同的列名 name
,什么
我想要的是在每个 table 中给出前缀,例如 customer_
、cashier_
、sales_
更新
我期待的结果是这样的
customer_name
customer_address
customer_phone
cashier_name
cashier_another_column
cashier_another_column2
sales_date
sales_another_column
sales_another_column2
你必须使用 select 然后你可以给你的列名起别名。
举个例子。
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->select('customer.name as customer_name','cashier.name as cashier_name')
->first();
等等,您可以从数据库中 select 任意多的字段,并为它们指定别名。
Use get() method and add alias to column name. You can add toArray() after get() to get result in array.
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->get(['customer.name as customer_name', 'cashier.name as cashier_name'])
->toArray();
答案是你不能那样做。我通常只为相同的列名取别名,其余的取 *
。所以你需要为所有相同的列名起别名来解决冲突
Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->select(['*', 'customer.name as customer_name', 'cashier.name as cashier_name'])
->get();
我有这个问题
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->first();
我如何 select 每个 table 都带有前缀,这样我就可以这样调用 :
- $订单->customer_name
- $订单->cashier_name
对于上面的查询,我只得到一个名称行,因为每个 table 具有相同的列名 name
,什么
我想要的是在每个 table 中给出前缀,例如 customer_
、cashier_
、sales_
更新
我期待的结果是这样的
customer_name
customer_address
customer_phone
cashier_name
cashier_another_column
cashier_another_column2
sales_date
sales_another_column
sales_another_column2
你必须使用 select 然后你可以给你的列名起别名。
举个例子。
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->select('customer.name as customer_name','cashier.name as cashier_name')
->first();
等等,您可以从数据库中 select 任意多的字段,并为它们指定别名。
Use get() method and add alias to column name. You can add toArray() after get() to get result in array.
$sales = Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->get(['customer.name as customer_name', 'cashier.name as cashier_name'])
->toArray();
答案是你不能那样做。我通常只为相同的列名取别名,其余的取 *
。所以你需要为所有相同的列名起别名来解决冲突
Sales::join('customer', 'customer.id', '=', 'sales.customer_id')
->join('cashier', 'cashier.id', '=', 'sales.cashier_id')
->select(['*', 'customer.name as customer_name', 'cashier.name as cashier_name'])
->get();