Laravel eloquent - Doctrine 特征等效
Laravel eloquent - Doctrine features equivalent
来自长期的 Symfony-Doctrine 背景,我已经开始学习 Laravel 8。
我的第一个发现是在模型和迁移中使用 make:migration
(根据我目前的理解)后需要手动创建迁移。
带有 Doctrine 的 Symfony 允许一系列自动化,我只需要从模型(php 注释或 yaml)创建字段或关系 - 在启动 doctrine:schema:validate
和 make:migration
https://symfony.com/doc/current/doctrine.html#migrations-adding-more-fields.
假设我创建了一个具有一对多关系的 Post 和 Comment 实体。
如果我在 php classes
中定义关系
class Comment extends Model
{
/**
* Get the Post owning this comment
*/
public function post()
{
return $this->belongsTo(Post::class);
}
}
Post class
class Post extends Model
{
/**
* Get the comments for the blog post.
*/
public function comments()
{
return $this->hasMany(Comment::class);
}
}
是否可以生成更新数据库并创建这些关系的迁移脚本?还是我必须重写它两次(一次在 PHP class 和 hasMany/BelongsTo 中,然后在迁移文件中再次重写?
没有 map/read 模型(链接 php 和数据库)的中央文件现在对我来说似乎很奇怪。
我才刚刚开始,但文档似乎没有提到任何等价物
编辑:为了更清楚:我在问是否有从模型(或中央映射文件:yaml 或注释)生成迁移 code/script 的等价物无需将字段写入迁移和模型(在 $fillable 或其他字段中...)
编辑 2 我能找到的最接近的是这个
https://github.com/laracasts/Laravel-5-Generators-Extended
另一个麻烦的用例:多对多迁移
必须从头开始手动编写第三个中间 table 真的是我希望自动完成的事情。
在 laravel 框架中,尽管有其他著名的 fameworks,如 symfony 或 python django,但您负责制作数据库迁移文件。通过这种方式,您可以自由自定义数据库模式并添加任何数据库约束,例如(唯一约束、关系约束等)。您还可以在迁移文件中使用 \DB::unprepared();
添加任何原始 sql。
我可以告诉你,对这个流程有点困惑是正常的,因为你已经像我一样在其他框架中习惯了这种自动化,但相信我,你会习惯这个流程的.
顺便说一下,有一些软件包可以为您自动执行此操作(根据模型创建迁移文件)。
要创建迁移,您需要运行命令
php artisan make:migration migration_name
要创建模型,您需要运行命令
php artisan make:model table_name
参考这个link
https://laravel.com/docs/8.x/eloquent#generating-model-classes
通过创建模型,您可以创建一个 table,您可以在其中定义列类型和不同的属性,并定义与其他 table 的关系。
通过创建迁移文件,您可以定义 table 列和约束。
来自长期的 Symfony-Doctrine 背景,我已经开始学习 Laravel 8。
我的第一个发现是在模型和迁移中使用 make:migration
(根据我目前的理解)后需要手动创建迁移。
带有 Doctrine 的 Symfony 允许一系列自动化,我只需要从模型(php 注释或 yaml)创建字段或关系 - 在启动 doctrine:schema:validate
和 make:migration
https://symfony.com/doc/current/doctrine.html#migrations-adding-more-fields.
假设我创建了一个具有一对多关系的 Post 和 Comment 实体。
如果我在 php classes
class Comment extends Model
{
/**
* Get the Post owning this comment
*/
public function post()
{
return $this->belongsTo(Post::class);
}
}
Post class
class Post extends Model
{
/**
* Get the comments for the blog post.
*/
public function comments()
{
return $this->hasMany(Comment::class);
}
}
是否可以生成更新数据库并创建这些关系的迁移脚本?还是我必须重写它两次(一次在 PHP class 和 hasMany/BelongsTo 中,然后在迁移文件中再次重写?
没有 map/read 模型(链接 php 和数据库)的中央文件现在对我来说似乎很奇怪。
我才刚刚开始,但文档似乎没有提到任何等价物
编辑:为了更清楚:我在问是否有从模型(或中央映射文件:yaml 或注释)生成迁移 code/script 的等价物无需将字段写入迁移和模型(在 $fillable 或其他字段中...)
编辑 2 我能找到的最接近的是这个 https://github.com/laracasts/Laravel-5-Generators-Extended 另一个麻烦的用例:多对多迁移 必须从头开始手动编写第三个中间 table 真的是我希望自动完成的事情。
在 laravel 框架中,尽管有其他著名的 fameworks,如 symfony 或 python django,但您负责制作数据库迁移文件。通过这种方式,您可以自由自定义数据库模式并添加任何数据库约束,例如(唯一约束、关系约束等)。您还可以在迁移文件中使用 \DB::unprepared();
添加任何原始 sql。
我可以告诉你,对这个流程有点困惑是正常的,因为你已经像我一样在其他框架中习惯了这种自动化,但相信我,你会习惯这个流程的.
顺便说一下,有一些软件包可以为您自动执行此操作(根据模型创建迁移文件)。
要创建迁移,您需要运行命令
php artisan make:migration migration_name
要创建模型,您需要运行命令
php artisan make:model table_name
参考这个link https://laravel.com/docs/8.x/eloquent#generating-model-classes
通过创建模型,您可以创建一个 table,您可以在其中定义列类型和不同的属性,并定义与其他 table 的关系。 通过创建迁移文件,您可以定义 table 列和约束。