【发布时间】:2020-11-06 07:01:11
【问题描述】:
我遇到了一些奇怪的事情,我认为这可能是框架本身的错误,所以我想知道是否有类似的经历。
我有两个实体:Contact 和 Media 在 1:M 关系中。关系定义为:
public function media()
{
return $this->hasMany(Media::class);
}
现在我看到的问题是,当我继续 show 控制器方法并加载这样的关系时:
public function show(Contact $contact)
{
$contact->load('media');
return response()->json($contact);
}
联系人已解决,媒体关系如下:
"first_name": "Melisa",
...
"media": [
{
"id": 50,
...
但是,如果我修改关系的大小写以便我调用:
public function show(Contact $contact)
{
$contact->load('mEdIa');
return response()->json($contact);
}
返回:
"first_name": "Melisa",
...
"m_ed_ia": [
{
"id": 50,
...
...这真是令人不安。它应该发生吗?
【问题讨论】:
-
这就是野兽的本性。如果你的钥匙都一样,它怎么能区分你的意图。
mEdia变成m_edia,这不是错误,而是用户错误。 -
是的,但从我的角度来看,
mEdia不应该被允许。我的关系函数名称是media,我希望它可以这样使用。对于多个单词关系,我也希望命名一致。例如statusTypes...如果不是函数名,我不希望sTaTuSTYpE被称为关系。 -
不,也许我不够清楚,或者你只是不知道。 PHP 不区分大小写,因此如果无法验证,您希望如何更正此行为。
-
转换下划线的逻辑是区分大小写的,否则不知道下划线放在哪里。考虑到这一点,严格比较 2 个字符串并不难
-
我认为我们在这里走错了路,我会回答澄清。
标签: php laravel laravel-7 laravel-7.x