Laravel 5.3,Eloqent模型和命名空间问题

时间:2016-09-23 12:40:57

标签: php laravel eloquent

我很困惑。我正在关注la lavel文档到T并且某些东西没有正确配置?

简短:我不能像文档展示那样使用我的Eloquent模型。

The Long:

我从Laravel文档中执行了这些步骤。

  1. laravel新博客
  2. 将数据库详细信息添加到.env
  3. 创建了一个模型:php artisan make:model SavedService

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    /**
    * @property integer $service_id
    * @property string $title
    * @property string $price
    * @property string $short_description
    * @property string $long_description
    * @property integer $display
    */
    class SavedService extends Model
    {
        protected $table = 'saved_services';
        public $timestamps = false;
    
        /**
        * @var array
        */
        protected $fillable = ['title', 'price', 'short_description', 'long_description', 'display'];
    }
    
  4. 创建了一个控制器:php artisan make:controller datatest

  5. index方法添加到控制器:

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Http\Requests;
    use App\SavedService;
    
    class datatest extends Controller
    {
        public function index() {
            $flights = App\SavedService::all();
    
            foreach ($flights as $flight) {
                echo $flight->name;
            }
        }
    }
    
  6. 现在,use App\SavedService;在PHPStorm中突出显示:“从未使用过SavedServices。”

    此外,对于$flights = App\SavedService::all();,应用程序以红色突出显示:“未定义的命名空间应用程序”。 SavedService突出显示,PHPStorm告诉我“Undefined class SavedService。”

    如果我让PHPStorm创建SavedService类,其名称空间为App/Http/Controllers/App

    ...

    项目结构

    app
    -composer.json
    -Http\
    -SavedService.php
    --Controllers\
    ---dataTest.php
    

    我的composer.json自动加载:

    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    

    编辑:
    对不起,不得不赶去,火车进站了!我想补充一些事情。首先,我正在使用一个流浪汉机器来托管这些项目,不确定这是否很重要?其次,我想使用Propel-orm。我发现雄辩并不是很有说服力。我无法推动工作,与命名空间有关。推进生成的模型将在app / Http / Models / Http / Models / ModelName中。我开始认为这是一个问题。

    我没有做任何特别的事情。只需按照文档中的步骤操作即可。

    此外,Eloquent似乎不像Laravel文档页面上托管的雄辩文档那样工作。例如“get()”eloquentModel :: get()。 laravel文档显示它,get()和phpstorm抛出一个合适的说$ key是预期的。雄辩的文件确认,得到($ key)。我在那里错过了什么?为什么不同,为什么不在文档中提到它。也许这与我目前的问题有关?也许答案会解决为什么我不能使用推进器?

    结束编辑。

    我错过了什么?我很困惑,为什么这不起作用?请帮忙!!!感谢

1 个答案:

答案 0 :(得分:1)

更改

$flights = App\SavedService::all();

$flights = SavedService::all();