【问题标题】:Same name for Laravel controller and model?Laravel 控制器和模型的名称相同吗?
【发布时间】:2023-04-09 14:06:01
【问题描述】:

我有一个模型Entry 并且没有问题。

在我创建一个同名的新控制器后,模型停止工作。

当我执行Enrty::where(... 时发生致命错误:

Call to undefined method entry::where()   

【问题讨论】:

  • 将控制器重命名为EntryController
  • 如果它们在同一个命名空间中,那么它将无法工作。您可以尝试@WereWolf-TheAlpha 的建议,或者将模型或控制器(或两者)移动到不同的命名空间。
  • @Kryten 我已经尝试过本教程中的命名空间daylerees.com/codebright/controllers 但出现错误Class Blog\Controller\entry does not exist 我不知道为什么它找不到类!
  • 命名空间需要仔细设置以确保 Composer 的自动加载器可以找到您的类。对于教程,try this(注意,我还没有看过这个,只是在搜索中找到的)。
  • 你是通过artisan命令创建模型和控制器吗?

标签: laravel laravel-4


【解决方案1】:

定义控制器

<?php namespace Controllers;

class Entry extends \BaseController {}

定义模型

<?php namespace Models;

class Entry extends \Eloquent {}

现在,如果你导入/别名它们,你可以使用这些类

use Controllers\Entry as EntryController;
use Models\Entry as EntryModel;

EntryController::method();
EntryModel::anotherMethod();

注意:此代码用于说明原理。

【讨论】:

    【解决方案2】:

    无需更改/重命名命名空间

    只需使用as关键字

    use Models\Car as CarModel;
    

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 2023-03-22
      • 1970-01-01
      • 2013-03-24
      • 2017-03-08
      • 1970-01-01
      • 2012-11-04
      • 2015-06-20
      • 2012-04-08
      相关资源
      最近更新 更多