php - Arcanedev\LaravelNestedSet\NodeTrait appendToNode() 错误
问题描述
我第一次使用arcanedev/laravel-nestedset嵌套集。
我正在学习教程 并相应地设置我的模型。但是当我调用该create
方法时,它会给我以下错误。
Symfony\Component\Debug\Exception\FatalThrowableError 抛出消息“传递给 App\Models\AmazonCategoryIndices::appendToNode() 的参数 1 必须是 Arcanedev\LaravelNestedSet\Contracts\Nodeable 的实例,给定 App\Models\AmazonCategoryIndices 的实例,调用在 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);
}
解决方案
根据错误消息,传递给的参数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 的包,因为它似乎没有被维护。
推荐阅读
- c - Makefile 的输出说明
- mongodb - MONGO DB UpdateOne WriteError
- android-studio - JetBrains Mono 字体未显示在我的字体文件中的 Android Sudio 项目中
- node.js - 在 NodeJS 和 React/Webpack 之间重用代码的最佳方式是什么?
- bash - 如何仅计算位于层次结构深处的特定子目录中的文件?
- google-apps-script - 谷歌脚本 - 新日期()我把这个放在哪里?& 返回内容服务
- c++ - 如何在 vscode 中设置项目文件夹并链接所有 cpp 文件
- vue.js - 检查vue route中是否有前一页
- postgresql - 从包含 jsonb[] 列中特定 id 的 postgres 表中获取行
- javascript - 如何设置超时以便等待至少需要一定的时间?