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

Laravel一对多关系不起作用-返回递归

夏学名
2023-03-14

我正在用Laravel8开发一个应用程序,我遇到了非常奇怪的行为。

我有一个叫做“组织”的模型,这个组织有很多用户(来自捷流的模型)。

我像往常一样做了关系:

在组织模式中:

    public function users()
    {
        return $this->hasMany(User::class);
    }

在用户模型中:

 public function organisation()
    {
        return $this->belongsTo(Organisation::class);
    }

我在用户表上有一个名为Organization_id的字段,在迁移中声明如下:

 $table->foreignId('organisation_id')->nullable()->constrained();

我检查了数据库,所有的东西都填进去了,没有空值。

预期结果:如果我打电话

  $testUser=User::find(1);
  $testOrg=$testUser->organisation();

我将获取组织对象。

实际结果:我收到一个Veeeery日志对象,它声明了一些包括递归的内容,而不是我想要的组织。这是关于外键的错误吗?用户模型也与不同的模型有归属关系,这是标准的归属关系吗?

EDIT我可以在打电话时收到组织

  $testUser=User::with('organisation')->find(1);

但这不是我想使用的干净的Laravel方式。

我用$testOrg=$testUser调试了这个查询-

那么“哪里”错了?

任何提示或帮助将不胜感激

以下是一些输出:(整个输出太长)

NULL[“记住令牌”]=

共有1个答案

琴镜
2023-03-14

试试这个:

 $testUser=User::with('organisation')->find(1);

如果你想继续你的方式,然后更新到这个:

$testUser=User::find(1);
$testOrg=$testUser->organisation;
 类似资料:
  • 我已经在Laravel项目中通过php artisan make:auth命令生成了注册表单。我想通过添加一些功能来定制它,用户可以在注册时选择自己的性别。我制作了一个genders表,该表的genders列包含两个值Man和Woman,并在users表中添加了gender_id列。我有很多关系,但当我尝试注册用户时,他已注册,但性别id列仍然为空。我不知道错在哪里。感谢您的帮助。这是我的密码。

  • Hibernate版本-5.3.4。最终版本,mysql连接器版本-8.0.12 我在帖子和帖子内容之间有一个关系: 帖子: 后内容: 我一直试图让PostContent的负载变懒,但没有什么工作。 我添加到关系提取=FetchType. LAZY,可选=false, 我加入了冬眠。cfg。xml此属性: 这个maven插件: 要启用字节码增强, 添加, 我试图改变Hibernate版本(5.2,

  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 我正在尝试使用透视表实现多对多关系。我的透视表的名称是“post_-tag”,列名是“post_-id”和“tag_-id”。post和tag模型类如下所示。 标签类别如下所示: post_tag表如下: 我正在使用以下代码尝试帖子的标签: 但它抛出了一个错误: 查询连接中的异常。php第729行:SQLSTATE[42S22]:未找到列:1054个未知列的“posts”。where子句中的pos

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可