首页 > 解决方案 > Arcanedev\LaravelNestedSet\NodeTrait appendToNode() 错误

问题描述

我第一次使用arcanedev/laravel-nestedset嵌套集。
我正在学习教程 并相应地设置我的模型。但是当我调用该create方法时,它会给我以下错误。

Symfony\Component\Debug\Exception\FatalThrowableError 抛出消息“传递给 App\Models\AmazonCategoryIndi​​ces::appendToNode() 的参数 1 必须是 Arcanedev\LaravelNestedSet\Contracts\Nodeable 的实例,给定 App\Models\AmazonCategoryIndi​​ces 的实例,调用在 E:\TestProjects\pld-v4-admin\vendor\arcanedev\laravel-nestedset\src\NodeTrait.php 第 1074 行"。

我使用的数据与教程中的数据相同。

这是我的模型

====================================

namespace App\Models;
use Arcanedev\LaravelNestedSet\NodeTrait;
use Illuminate\Database\Eloquent\Model;
class AmazonCategoryIndices extends Model
{
   protected $table = 'amazon_category_indices';
   protected $guarded = [];   
   use NodeTrait;
}

====================================

foreach ($shops as $key => $value) {
  AmazonCategoryIndices::create($value);
}

标签: phplaravel

解决方案


根据错误消息,传递给的参数App\Models\AmazonCategoryIndices::appendToNode()是一个实例,App\Models\AmazonCategoryIndices而它期望一个实例Arcanedev\LaravelNestedSet\Contracts\Nodeable

因此,在您的模型中添加合同Arcanedev\LaravelNestedSet\Contracts\Nodeable应该可以解决您的错误。


namespace App\Models;

use Arcanedev\LaravelNestedSet\NodeTrait;
use Illuminate\Database\Eloquent\Model;
use Arcanedev\LaravelNestedSet\Contracts\Nodeable;

class AmazonCategoryIndices extends Model implements Nodeable
{
   protected $table = 'amazon_category_indices';
   protected $guarded = [];   
   use NodeTrait;
}

当你说: “ARCANEDEV/LaravelNestedSet”包在其后端使用“lazychaser/laravel-nestedset”。

...它不是。它们是两个不同的软件包,并且工作方式不同。Arcanedev 将lazychaser 归功于他可能使用大量资源的工作。
既然已经说过,我不建议使用 arcanedev 的包,因为它似乎没有被维护。


推荐阅读