Php 在Laravel雄辩ORM中存储元组数组

Php 在Laravel雄辩ORM中存储元组数组,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我对拉威尔是个新手,对他们雄辩的模型很感兴趣。我正在做一个小的实践项目,需要关于如何最好地存储一些数据的建议 我想在表中存储小狗的体重和测量体重的日期(最好是元组或json格式)。我想稍后使用这些数据使用Vue创建图表,以便创建描述随时间增长的图表。最好的方法是什么 我想象在模型迁移中会出现某种类型的$table->integer('weight'),$table->timestamp('weight-measurement-date'),或者可能是$table->json('weight-da

我对拉威尔是个新手,对他们雄辩的模型很感兴趣。我正在做一个小的实践项目,需要关于如何最好地存储一些数据的建议

我想在表中存储小狗的体重和测量体重的日期(最好是元组或json格式)。我想稍后使用这些数据使用Vue创建图表,以便创建描述随时间增长的图表。最好的方法是什么


我想象在模型迁移中会出现某种类型的
$table->integer('weight'),$table->timestamp('weight-measurement-date')
,或者可能是
$table->json('weight-data')
,但我对最佳实践还是陌生的。当然,数据库表需要存储数据,而不会覆盖或擦除以前的条目。任何帮助都将不胜感激。

我将使用一个简单的
一对多
关系,因此您将有一个
小狗
表和一个
测量
表,其中
测量
表包含所有发生的不同测量

这将允许您为特定的小狗添加任意多的测量值

我选择了
measured_at
而不是
weighted_at
作为小狗称重的日期,因为可能会在测量表中添加一个新列(例如高度),因此,我认为在处使用
measured_而不是在
处使用
weighted_是有意义的,因为您可能不希望测量有多个日期

要开始,您可以使用以下内容:

php artisan make:migration create_puppies_table

php artisan make:migration create_measurements_table
然后将以下内容添加到迁移中

幼犬迁徙:

Schema::create('puppies', function (Blueprint $table) {
    $table->id();
    $table->timestamps();
});
Schema::create('measurements', function (Blueprint $table) {
    $table->id();
    $table->foreignId('puppy_id')->constrained();
    $table->timestamp('measured_at');
    $table->timestamps();
});
测量迁移:

Schema::create('puppies', function (Blueprint $table) {
    $table->id();
    $table->timestamps();
});
Schema::create('measurements', function (Blueprint $table) {
    $table->id();
    $table->foreignId('puppy_id')->constrained();
    $table->timestamp('measured_at');
    $table->timestamps();
});
然后,您需要两个模型
Puppy
Measurement
,您可以在其中定义关系方法:

小狗模型:

public function measurements()
{
    return $this->hasMany('App\Measurement');
}
测量模型:

public function puppy()
{
    return $this->belongsTo('App\Puppy');
}
您可以在文档中阅读更多关于雄辩和关系的信息:

附言:

唯一需要考虑的是如何存储权重,可能是
十进制
整数
,如果将其存储为整数,则每次在数据库中检索/存储时都必须对其进行转换