PHP致命错误:调用未定义函数Laravel Tinker

问题描述

我正在尝试在两个表(角色和能力)之间建立关系,但是当我运行函数allowTo()时,它说是未定义。 我试图清除缓存和配置,但未执行任何操作。 如果有人可以帮助,那就太好了!

模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    
protected $guarded = [];

    public function abilities(){
        return $this->belongsToMany(Ability::class)->withTimestamps();
    }

   public function allowTo($ability){

        $this->abilities()->save($ability);
   }

外壳上的修补程序环境

>>> $user = App\User::find(7);

=> App\User {#3044
     id: 7,name: "Rebeca Tejedor",email: "rebtej@gmal.com",email_verified_at: null,created_at: "2020-08-13 10:29:46",updated_at: "2020-08-13 10:29:46",}
>>> $role = Role::firstOrCreate(['name'=> 'lender']);

[!] Aliasing 'Role' to 'App\Role' for this Tinker session.
=> App\Role {#3041
     id: 1,name: "lender",created_at: "2020-08-13 10:41:15",updated_at: "2020-08-13 10:41:15",}
>>> $ability = Ability::firstOrCreate(['name'=> 'edit_items']);

[!] Aliasing 'Ability' to 'App\Ability' for this Tinker session.
=> App\Ability {#3040
     id: 1,name: "edit_items",created_at: "2020-08-13 10:43:34",updated_at: "2020-08-13 10:43:34",}

>>> $role = allowTo($ability)

错误:

PHP Fatal error: Call to undefined function allowTo() in Psy Shell code on line 1

The model

Tinker enviroment

解决方法

您以这种方式使用您的关系:

$role=allowTo($ability);

您应该像这样使用它

$role->allowTo($ability);

以及您的方法中

public function allowTo($ability)
{
$this->abilities()->attach($ability->id);
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...