php - Laravel 与 Symfony |模型属性

标签 php laravel symfony eloquent orm

我实际上是在发现 Laravel(我已经使用 symfony 多年)并且我面临这样一种情况:我不知道我是否只是找不到正确的信息,或者这只是在 Laravel 中做的方式。

在 Symfony 中创建模型时,您将属性放在模型类中。实际上,这些属性代表 ORM 表的不同列。

现在在 Laravel 中,我看到所有人都没有将这些属性放在模型类中,而是放在迁移文件中。因此,应该在新项目中做出贡献的新开发人员必须查看数据库或迁移文件。在我看来,这不是 ORM 的规则:“ 让开发人员思考类而不是表

请问有人可以说明这一点吗?

谢谢

最佳答案

如果您使用 PHPStorm(但它也可以与其他 IDE 一起使用),有一个有趣的 composer 包可以为您生成模型文档,以便根据您的迁移自动完成属性和方法:

https://github.com/barryvdh/laravel-ide-helper

它的三个主要方法:

  • php artisan ide-helper:generate为 Facades 创建 phpDoc
  • php artisan ide-helper:model为您的模型创建 phpDoc(您应该在每次新迁移后重新启动它)
  • php artisan ide-helper:meta创建 phpstorm 元文件

  • 因此,如果您启动 php artisan ide-helper:model 它将添加类似于此的内容
    /**
     * App\User
     *
     * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Permission[] $permissions
     * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Role[] $roles
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User permission($permissions)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User role($roles, $guard = null)
     * @property int $id
     * @property string $name
     * @property string $email
     * @property \Illuminate\Support\Carbon|null $email_verified_at
     * @property string $password
     * @property string|null $remember_token
     * @property \Illuminate\Support\Carbon|null $created_at
     * @property \Illuminate\Support\Carbon|null $updated_at
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereCreatedAt($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereEmail($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereEmailVerifiedAt($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereId($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereName($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePassword($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereRememberToken($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereUpdatedAt($value)
     * [...]
     */
    

    所以你有一个 phpDoc

    并且您的 IDE 应该能够像这样自动完成您的代码:

    enter image description here

    关于php - Laravel 与 Symfony |模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59390078/

    相关文章:

    ubuntu - 如何复制 vagrant box 以再次使用

    php - Laravel 中的命名空间别名

    forms - Symfony2 - 在表单中编辑标签显示名称

    javascript - 阿拉伯语 tinymce 不工作

    php - 什么可以使更新查询不更新但返回成功

    php - 为 SOAP 请求创建特定信封

    symfony - 一对多关系不起作用

    php - session 已在 FOS User Bundle Registration Confirmation 中开始

    php - 我使用ReCaptcha v3出现 "timeout-or-duplicate"错误

    php - Symfony2 : The CSRF token is invalid. 请尝试重新提交表单