BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在
Posted
技术标签:
【中文标题】BadMethodCallException : 方法 Illuminate\\Database\\Query\\Builder::offers 不存在【英文标题】:BadMethodCallException : Method Illuminate\Database\Query\Builder::offers does not existBadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在 【发布时间】:2020-02-24 11:38:54 【问题描述】:我正在尝试在 Laravel 5.6.39 上执行 php artisan db:seed 并遇到错误:
BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在。
提供型号代码:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Offer extends Model
protected $guarded = [];
public function task()
return $this->belongsTo(Task::class);
public function user()
return $this->belongsTo(User::class);
任务模型
public function offers()
return $this->hasMany(Offer::class);
数据库种子文件
factory(App\Task::class, 10)->create()->each(function ($task)
return $task->offers()->save(factory(App\Offer::class)->make());
);
我做错了什么?
【问题讨论】:
好吧,似乎认为App\Task
上没有offers
方法
@lagbox 你能更详细一点吗?谢谢,
嗯,第一件事是你怎么知道你从播种机显示的代码导致了这个?
当我注释掉下面的代码并运行db:seed时,不会出现错误 factory(App\Task::class, 10)->create()->each(function ($task ) return $task->offers()->save(factory(App\Offer::class)->make()); );
PHP 似乎不认为App\Task
有offers
方法或者可见性不是public
【参考方案1】:
将您的 DatabaseSeeder 更新为此并检查
factory(App\Task::class, 10)->create()->each(function ($task)
return $task->offers()->save(factory(App\Offer::class)->create());
);
【讨论】:
@DanielOmara 如果通过php artian serve
,您将如何运行应用程序然后重新启动它以上是关于BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在的主要内容,如果未能解决你的问题,请参考以下文章
删除()上的 Laravel BadMethodCallException
BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在
BadMethodCallException 调用未定义的方法 App\Models\User::hasAnyRole()
Laravel 2 BadMethodCallException 实例:'int 不存在'和'方法不存在'
在 Eloquent 模型上调用块时 /bootstrap/cache/compiled.php 中的 BadMethodCallException