在 eloquent 中自动获取时重命名关系名称
Rename relation name when auto fetching in eloquent
class Order extends Elequent{
protected $table = 'order';
const CREATED_AT = "createdAt";
const UPDATED_AT = "updatedAt";
protected $with = array('orderItem', 'address');
public function orderItem(){
return $this->hasMany("OrderItem","orderId");
}
public function address(){
return $this->hasOne("OrderAddress","orderId","id");
}
}
//in controller
$order = Order::findOrFail($orderId);
echo $order;
当使用上面的 class 将订单序列化为 json 时,我怎样才能将 order_item 设置为 orderItem(我更喜欢骆驼案例而不是蛇案例)
{
"id": 1,
"userId": 1,
"createdAt": "2015-04-30 12:08:26",
"deletedAt": "0000-00-00 00:00:00",
"updatedAt": "2015-04-30 12:08:26",
"state": "activated",
"deliveryNote": null,
"order_item": [
{
"id": 1,
"specialProductId": 29,
"volume": 750,
"quantity": 2,
"price": "543.38",
"orderId": 1,
"updatedAt": "2015-04-30 12:08:26",
"createdAt": "2015-04-30 12:08:26"
}
],
"address": null
}
您可以 copy/rename 对象 属性 并取消设置旧对象。
//in controller
$order = Order::findOrFail($orderId);
$order->orderItem = $order->order_item;
unset($order->order_item);
echo $order;
为了更好的使用,你可以把这个方法放在你的基础模型上,
public function toArrayCamel()
{
$array = $this->toArray();
foreach($array as $key => $value)
{
$return[camel_case($key)] = $value;
}
return $return;
}
稍后在您的控制器上,
$order = Order::findOrFail($orderId);
return Response::json( $order->toArrayCamel() );
在您的模型中,将 $snakeAttributes
属性 设置为 false。这将在生成数组时防止属性 snake_cased。
class Order extends Elequent {
public static $snakeAttributes = false;
}
class Order extends Elequent{
protected $table = 'order';
const CREATED_AT = "createdAt";
const UPDATED_AT = "updatedAt";
protected $with = array('orderItem', 'address');
public function orderItem(){
return $this->hasMany("OrderItem","orderId");
}
public function address(){
return $this->hasOne("OrderAddress","orderId","id");
}
}
//in controller
$order = Order::findOrFail($orderId);
echo $order;
当使用上面的 class 将订单序列化为 json 时,我怎样才能将 order_item 设置为 orderItem(我更喜欢骆驼案例而不是蛇案例)
{
"id": 1,
"userId": 1,
"createdAt": "2015-04-30 12:08:26",
"deletedAt": "0000-00-00 00:00:00",
"updatedAt": "2015-04-30 12:08:26",
"state": "activated",
"deliveryNote": null,
"order_item": [
{
"id": 1,
"specialProductId": 29,
"volume": 750,
"quantity": 2,
"price": "543.38",
"orderId": 1,
"updatedAt": "2015-04-30 12:08:26",
"createdAt": "2015-04-30 12:08:26"
}
],
"address": null
}
您可以 copy/rename 对象 属性 并取消设置旧对象。
//in controller
$order = Order::findOrFail($orderId);
$order->orderItem = $order->order_item;
unset($order->order_item);
echo $order;
为了更好的使用,你可以把这个方法放在你的基础模型上,
public function toArrayCamel()
{
$array = $this->toArray();
foreach($array as $key => $value)
{
$return[camel_case($key)] = $value;
}
return $return;
}
稍后在您的控制器上,
$order = Order::findOrFail($orderId);
return Response::json( $order->toArrayCamel() );
在您的模型中,将 $snakeAttributes
属性 设置为 false。这将在生成数组时防止属性 snake_cased。
class Order extends Elequent {
public static $snakeAttributes = false;
}