【问题标题】:Eloquent accessing related data in Laravel在 Laravel 中 Eloquent 访问相关数据
【发布时间】:2017-09-13 16:51:37
【问题描述】:

我正在尝试从返回的数据中获取关系。

在用户中

public function folders()
{
  return $this->hasMany("App\Folder");
}

public function rootFolder()
{
  return $this->folders()->where("parentid", null);
}

在文件夹中

public function subFolders() {
  return $this->hasMany("App\Folder", "parentid");
}

public function parentFolder()
{
  return $this->belongsTo("App\Folder", "parentid");
}

在控制器中

$root = auth()->user()->rootFolder;
$subs = $root->subFolders;
foreach ($subs as $sub) {
    echo $sub->name;
}

我来了

Property [subFolders] does not exist on this collection instance.

如果

$root = new Folder;

异常消失。

我是否必须以某种方式告诉 rootFolder 函数的返回数据你是一个文件夹?

【问题讨论】:

    标签: php laravel collections eloquent


    【解决方案1】:

    这个函数返回一个查询:

    public function rootFolder()
    {
      return $this->folders()->where("parentid", null);
    }
    

    所以这个是试图访问查询的“subFolders”属性:

    $root = auth()->user()->rootFolder;
    $subs = $root->subFolders;
    

    此更改将返回一个文件夹对象:

    public function rootFolder()
    {
      return $this->folders()->where("parentid", null)->first();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2020-07-03
      • 2017-02-17
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多