当前位置: 首页 > 知识库问答 >
问题:

无法使用Laravel雄辩ORM获取关系数据

宗增
2023-03-14

我正在与Laravel 5.4合作。我正在使用雄辩的ORM。我已经创建了以国家和州为单位的表格。二者的描述如下:

国家表:

国家表:

现在,我编写了两个方法来设置状态和国家表之间的关系。

国家型号:

public function states()
{
    return $this->hasMany('App\Models\Masters\State')->select('*');
}

状态模型

public function country()
{
    return $this->belongsTo('App\Models\Masters\Country')->select('name as country_name');
}

现在,我将创建编辑功能,以便无法获取国家名称。

我已将查询写成

$state = State::with('country')->find($id);
return Response($state);

在这里,我得到的只有州数据和国家数据为空。

那么,为了获得州和国家数据,我应该做些什么改变呢?

共有1个答案

海嘉赐
2023-03-14

您不应该在您的关系中使用select。当您仅使用国家名称时,拉威尔将无法将其与您所在的州联系起来,所以它将不起作用。

你应该这样定义你的关系:

public function country()
{
    return $this->belongsTo(\App\Models\Masters\Country::class);
}

public function states()
{
    return $this->hasMany(\App\Models\Masters\State::class);
}

无选择

 类似资料:
  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 在发布这篇文章之前,我做了很多研究。 我得到以下错误时,试图插入一个记录到PostgreSQL使用Laravel雄辩的ORM。 这是错误: 这是数据库表创建模式: 这就是我试图执行的代码: 我创建了一个模型类FbPostShareCount扩展雄辩。 我知道laravel不支持复杂的键,但当我使用MySQL时,这个问题并没有发生

  • 有人能解释一下原因吗?

  • 我正在创建Laravel应用程序,我正在使用雄辩的ORM从DB检索数据,同时使用JSON响应进行响应。在本例中,我通过关系(player1,matchRule…)获得与其他相关数据的匹配。 在案例A中,一切正常,并返回所有相关数据。例子: 在B的情况下,我得到的只是匹配的id,它也工作得很好。 在C的情况下,我试图获得属性,但我得到空。为什么啊?如您所见,当在A中返回整个匹配时,它存在于对象中。

  • 嗨,我正在学习laravel。我使用雄辩的ORM删除方法,但我得到了不同的结果。不是真的或假的,而是空的。我设置了一个资源路由,在UsersController中有一个销毁方法。 但是我总是得到一个响应{“status”:“0”,“msg”:“failed”},数据库中的记录被删除。 然后我使用dd($res)。它在页面中显示null。 但是从课程中我学习到它返回一个布尔值true或false。

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入