php - Eloquent hasMany 关系 get() 不适用于嵌套对象

标签 php mysql laravel eloquent

我有一个对象有许多项目的情况,它有许多项目。例如,房子有许多房间,每个房间有许多家具

过去,很简单,就是说:

$house->rooms()->get()->all();

我会得到所有对象及其在数组中的嵌套对象(请原谅我的 JSON 语法中的任何错误):

{"house_name":"Max's House", "rooms":["den":[{"furniture_name":"couch"}],"kitchen":[{"furniture_name":"bed"}]]}, {.......}

但在另一种情况下,当我使用相同风格的代码时,它会得到 houserooms,但不会得到相关的 furnituresroom 对象。这可能是什么原因?就类中的关系声明而言,我的代码在这两种情况下似乎是相同的:

 public function rooms() {
    return $this->hasMany('HouseRoom', 'house_id');
}

我知道这没什么好继续的,但我希望找到以前遇到过此类问题的人。

我的猜测是:

  • 我不知道 squat 以及如何返回对象及其所有属性
  • 存在外键问题

最佳答案

原来是关于如何获取数据的经典语法错误。为了获得一个对象及其所有子对象,假设关系已正确设置,您需要使用:

$house->rooms;

关于php - Eloquent hasMany 关系 get() 不适用于嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997272/

相关文章:

php - 具有多个一对多到同一张表的 Eloquent 模型

laravel - 如何使用 Laravel Passport 从 API 注销用户

php - 如何在字符串中从末尾的固定位置插入一个字符?

mysql - 使用MySQL聚合函数进行比较

php - WebHook 在支付系统中是如何工作的?

javascript - store如何查询Mysql

java - 使用 MySQL 通过 java 更新表内的单个值

php artisan serve 使我的 cmd 提示卡住

php - 限制表格行中的列数

PHP 选择和分隔项目