我遇到了Laravel的恼人问题,我希望有人知道如何覆盖它...
这适用于允许销售代表查看其所在地区的库存的系统。我正在构建一个编辑器,允许我们的销售经理进入并更新商店ACL,以便他可以管理他的销售代表。
我有两个相关的模型:
class Store extends Eloquent {
public function StoreACLEntries()
{
return $this->hasMany("StoreACLEntry", "store_id");
}
}
class StoreACLEntry extends Eloquent {
public function Store()
{
return $this->belongsTo("Store");
}
}
这里的想法是Store
可以在ACL表中包含许多条目。
问题在于:我构建了一个通过AJAX与服务器交互的页面。管理员可以通过各种不同的方式进行搜索,并从ACL中查看每个存储和当前限制。我的控制器执行搜索并返回数据(通过AJAX),如下所示:
$stores = Store::where("searchCondition", "=", "whatever")
->with("StoreACLEntries")
->get();
return Response::json(array('stores' => $stores->toArray()));
客户端收到的响应如下所示:
{
id: "some ID value",
store_ac_lentries: [
created_at: "2014-10-14 08:13:20"
field: "salesrep"
id: "1"
store_id: "5152-USA"
updated_at: "2014-10-14 08:13:20"
value: "salesrep ID value"
]
}
问题在于StoreACLEntries
名称被删除的方式:它变为store_ac_lentries
。我做了一点挖掘,发现它是插入那些时髦下划线的toArray
方法。
所以我有两个问题:"为什么?"和#34;如何阻止它这样做?"
答案 0 :(得分:1)
自动将camelCase
更改为snake_case
有一些共同之处。您应该尝试将函数名称从StoreACLEntries
更改为storeaclentries
(小写)以删除此效果。