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

Laravel4.1.3深嵌套关系将在第三个关系上返回未定义的索引

公西繁
2023-03-14

我会尽可能的怀疑Thomas抱歉长代码。

这个问题将通过系列、书籍、作者、作者和图片来呈现

系列模型

/**
 * The Series Model
 */

namespace My\Project\Series\Eloquent;

use Illuminate\Database\Eloquent\Model;

class Series Extends Model
{
    protected $table = "series";

    protected static $bookModel = "My\Project\Books\Eloquent\Book";

    public function books()
    {
        return $this->hasMany(static::$bookModel);
    }
}

图书模型

/**
 * The Book Model
 */
namespace My\Projects\Books\Eloquent;

use Illuminate\Database\Eloquent\Model;

class Book Extends Model
{
    protected static $seriesModel = "My\Project\Series\Eloquent\Series";

    protected static $authorModel = "My\Project\Authors\Eloquent\Author";

    public function series()
    {
        return $this->belongsTo(static::seriesModel);
    }

    public function authors()
    {
        return $this->hasMany(static::$authorModel);
    }
}

作者模型

php prettyprint-override">/**
 * The Author Model
 */

namespace My\Project\Authors\Eloquent;

use Illuminate\Database\Eloquent\Model;

class Author extends Model
{
    protected static bookModel = "My\Project\Books\Eloquent\Book";

    protected static authorPictureModel = "My\Project\AuthorPictures\Eloquent\AuthorPicture";

    public function authorPicture()
    {
        return $this->hasOne(static::$authorPictureModel);
    }

    public function book()
    {
        return $this->belongsToMany(static::$bookModel);
    }

}

作者图片模型

/**
 * The Author Picture Model
 */

namespace My\Project\AuthorPictures\Eloquent;

use Illuminate\Database\Eloquent\Model;

class AuthorPicture
{
    protected static $authorModel = "My\Project\Authors\Eloquent\Author";

    public function author()
    {
        return $this->belongsTo(static::$authorModel);
    }
}

系列服务

/**
 * Series Service
 */

namespace My\Project\Series;

use My\Project\Series\SeriesProviderInterface;

class SeriesService 
{
    protected $seriesProvider;

    public function __construct(SeriesProviderInterface $seriesProvider)
    {
        $this->seriesProvider = $seriesProvider;
    }

    public function findSeriesById($id)
    {
        $series = $this->seriesProvider->findById($id); // Will return model

        return $series->with('books.authors.authorPicture')->get()->toArray();
    }
}

问题来了。seriesfeacade::findSeriesById($id)print\r结果将包括书籍和作者,但不包括作者图片。

奇怪的事情;如果我取消返回并转储DB::getQueryLog(),我可以看到,一个查询被触发,以在 (.,.,.)中查找AuthPictures

我已经可以在保存上关联模型了。但是如果我试图急切地加载这些嵌套关系,我会得到未定义的索引。

我阅读了所有的问题,甚至在github laravel/laravel上打开了一个问题,但仍然不确定我是做错了还是做了其他事情。这就是我问这个问题的原因。


共有2个答案

东郭瀚玥
2023-03-14

正在执行查询,但未显示数据,因为;

AuthPicture关系未设置在$可见作者数组下。那不是虫子。那是我无法策划的一个功能。

柏夕
2023-03-14

我有一个类似的问题,我解决了。首先,我提交了如下查询(所有关系都已正确设置)

$batch = Batch::with('batchItem.teamMember.employee.employeeType')->find($id);

然后我得到了一批产品

$batchItem = $batch->BatchItem[0];

但是当我打印r($batchItem)时,最后一个关系employeeType没有显示。更令人不安的是,例如,当我试图从$batchItem获取数据时

$batchItem->teamMember->employee->name

它会发出更多的查询,就好像根本没有数据被加载一样!

这个解决方案非常好。看来雄辩是非常区分大小写的。。。

$batchItem = $batch->batchItem[0];

解决了所有的问题!

不确定这是否是你的问题,但可能会有所帮助。

 类似资料:
  • 问题内容: 我在laravel中很难建立起非常嵌套的关系。 所需的行为如下, 我通过ID选择一个事件,我想查看哪些人已订阅该事件。 现在的问题是事件和人员之间有一些表格。 这是有效的查询! 事件模型 城市模型 公司模式 人物模型 我尝试过的 和 还有很多其他可能性,我真的很坚持。在laravel中实现这种嵌套关系链接如此困难吗? 谢谢! 问题答案: 如果只想从表中选择某些字段,请使用以下命令:

  • 在之前,创建一个有依赖其他模型的模型的时候,我们需要提前把依赖的模型给建立好,这样就非常麻烦,是不是有那么一种方法,在一个 create 里面把其他的依赖模型一起新建出来呢? 这一小节就来解决这个问题。这其中有一个坑(关于命名),让我调试的头皮发麻。 Book 与 User 的 belongs 关系 1. 保存关系 来到 book.ts , 首先保存一下 this.belongsTo 的返回值,在

  • 问题内容: 这是为这篇文章准备的一个通用的虚构示例。考虑6节课 是外部类,假设它为数据库表保留一个对象。 在此,没有呼叫或或。我的目标是外部范围不需要的内部对象的示例。 是内取和操作的数据,因此需要,和。 包含和需要,和。 若要让事情变得有趣,它需要一个Logger。我的示例现在深了3个作用域。 **我的问题很简单,如果您有一个对象3(或更多)作用域,而外部作用域上的对象没有调用该对象,那么如何将

  • 常用数据库类型: 关系型数据库(以 MySQL、Postgresql为代表) 文档数据库 (以 MongoDB 为代表) 在我们开发的 Web 应用程序或者,系统的应用程序里面存储的一些数据都是存在一定的关联关系的,比如说用户做出了一些操作,我们需要知道是谁发起了这些操作,所以在日志记录表里面会有一个操作发起人,也就是记录下当前用户的唯一 Id 值,这是为了让一切都有迹可循,当出现各种事故的时候,

  • 我有两个实体:用户和公司,它们之间的关系是n:m。在我的实体中,我有以下代码: 映射出了什么问题? 编辑重构代码 根据@Ahmed-Siouani的指示,我做了以下更改:

  • 我有users表,它与vendordetails表有hasOne关系。 vendordetails表包含country_id、state_id和city_id,与Country、State和City模型有归属关系。 vendorDetail.php模型为:- 如果我查询users表,如何获取国家、州和城市的记录。 在这个查询中,它只找到vendordetails表的结果,我还想要country、s