php - Laravel 和 Nova 中的“在 null 上调用没有 globalScopes 的成员函数”
问题描述
我打算使用 Laravel 和 Nova 开发一个 Web 应用程序。Nova 是最近推出的 Laravel CMS 包。由于它是新技术,我在使用它时遇到了问题。我无法为资源中的外键声明字段。
我创建了一个名为 Post 的新模型,它运行 artisan 命令来制作模型,这是 Post 迁移类的定义。
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->string("title");
$table->text('content')->nullable();
$table->unsignedInteger('user_id');
$table->increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
然后,我为它创建了一个运行此命令的资源。
php artisan nova:resource Post
当我检查 Nova 管理仪表板时,我可以看到添加了 Post 资源的菜单项。
然后在 Post 资源的 fields 方法中,我为表单烫伤折叠添加了这段代码。
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Title')->rules('required')->sortable(),
Textarea::make('content')->rules('required')->hideFromIndex()
];
}
当我从 Nova 仪表板 UI 创建新帖子时,我可以看到这些字段。当我创建时,它给了我一个错误,说需要用户 ID。因此,我尝试像这样指定 User 字段。
public function fields(Request $request)
{
return [
ID::make()->sortable(),
BelongsTo::make('User')->rules('required'),
Text::make('Title')->rules('required')->sortable(),
Textarea::make('content')->rules('required')->hideFromIndex()
];
}
当我再次创建新帖子时,会引发另一个错误,即“调用没有 globalScopes 的成员函数”。
我该如何解决?
解决方案
我有同样的问题,因为我忘记在我的模型中返回关系
我第一次有:
public function user()
{
$this->belongsTo(User::class);
}
代替:
public function user()
{
return $this->belongsTo(User::class);
}
推荐阅读
- typescript - 类的类型是否可能等于接口?
- go - 如何理解这个 go 闭包中的返回值?
- flutter - 如何在颤动的回调中捕获错误?
- reactjs - 意外的额外分号
- javascript - Javascript从购物车中删除选定的项目
- c++ - 我是否应该仅将构造函数用于 C++ 中的变量初始化?
- r - 在R中合并两个具有不同行的数据框
- fork - 我想在这行代码中使用 posix_spawn insted fork 或 execve 请帮助我
- amazon-web-services - CloudFormation 错误地报告 CloudFront 标签中的偏差
- javascript - 如何在不触发另一个函数的情况下将值从一个函数传递到另一个函数?