【问题标题】:BadMethodCallException in Builder.php line 2345: Call to undefined method Illuminate\Database\Query\Builder::notes()Builder.php 第 2345 行中的 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::notes()
【发布时间】:2016-12-21 07:31:06
【问题描述】:

我在学习 laracats.com 的从头开始的 laravel 教程时遇到了上述错误, 下面是完整的错误信息

哎呀,好像出了点问题。 Builder.php 第 2345 行中的 1/1 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::notes()

in Builder.php line 2345
at Builder->__call('notes', array())
at Builder->notes()
at call_user_func_array(array(object(Builder), 'notes'), array()) in Builder.php line 1426
at Builder->__call('notes', array())
at Builder->notes()
at call_user_func_array(array(object(Builder), 'notes'), array()) in Model.php line 3505
at Model->__call('notes', array()) in NotesController.php line 19
at Note->notes() in NotesController.php line 19
at NotesController->store(object(Request), object(Card))
at call_user_func_array(array(object(NotesController), 'store'), array(object(Request), 'card' => object(Card))) in Controller.php line 80
at Controller->callAction('store', array(object(Request), 'card' => object(Card))) in ControllerDispatcher.php line 146
at ControllerDispatcher->call(object(NotesController), object(Route), 'store') in ControllerDispatcher.php line 94
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
at ControllerDispatcher->callWithinStack(object(NotesController), object(Route), object(Request), 'store') in ControllerDispatcher.php line 54
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\NotesController', 'store') in Route.php line 174
at Route->runController(object(Request)) in Route.php line 140
at Route->run(object(Request)) in Router.php line 724
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54
at require_once('/home/archie/public_html/my_blog/public/index.php') in server.php line 21

我的 NotesController 如下

 namespace App\Http\Controllers;

use App\Card;
use App\Note;
use Illuminate\Http\Request;


class NotesController extends Controller
{
    public function store(Request $request, Card $card)
    {


        $note = new Note;

        $note->body = $request->body;
        $note->notes()->save($note);

        return back;


}
}

卡片型号如下

 namespace App;

use Illuminate\Database\Eloquent\Model;

class Card extends Model
{
   public function notes()
   {
    return $this->hasMany(Note::class);
   }

   public function path()
   {
    return '/cards/'.$this->id;
   }
}

【问题讨论】:

  • 请同时添加您的 NotesController
  • 您是否已迁移您的表格?与您的 Eloquent 模型相关联的名称是什么:NotesNote?模型存在吗?您可以使用:php artisan make:model Notephp artisan make:model Notes 创建它。也尝试在命令行上运行:composer dump-autoload
  • @Poiz 我使用了 php artisan make:model 注意
  • @RavishaHesh 我在上面添加了 NotesController
  • 我也面临同样的错误,而不是 __call('notes') Ny 错误是在 Builder->__call('appends', array(null))

标签: laravel-5


【解决方案1】:

根据Laravel from scratch tutorial,您正在尝试将笔记保存到卡片中。所以你应该使用$card->notes()->sav‌​e($note); 而不是$note->notes()->save($note);

【讨论】:

  • 你是否在 Card 模型上定义了 notes() 关系?
  • 请同时添加卡片型号
  • 卡片型号见上文
  • 你的卡片模型看起来不错,你从$card->notes()->sav‌​e($note);得到的错误是什么
  • 错误是 Builder.php 第 2345 行中的 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::sav‌​e()
猜你喜欢
  • 2019-07-13
  • 1970-01-01
  • 2019-12-12
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2019-10-20
相关资源
最近更新 更多