データベースをサクッと作成していきます。
$ php artisan make:migration create_eating_history_item
class CreateEatingHistoryItem extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('eating_history_items', function (Blueprint $table) {
$table->bigIncrements('id');
$table->double('protein');
$table->double('liqid');
$table->double('carbo');
$table->double('calorie');
$table->timestamps();
$table->engine = 'InnoDB';
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
Schema::create('eating_history_item_user', function (Blueprint $table) {
$table->integer('user_id')
->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
$table->integer('eating_history_item_id')
->foreign('eating_history_item_id')
->references('id')->on('eating_history_items')
->onDelete('cascade');
$table->engine = 'InnoDB';
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
Schema::create('eating_template_items', function (Blueprint $table) {
$table->bigIncrements('id');
$table->double('protein');
$table->double('liqid');
$table->double('carbo');
$table->double('calorie');
$table->timestamps();
$table->engine = 'InnoDB';
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('eating_template_items');
Schema::dropIfExists('eating_history_item_user');
Schema::dropIfExists('eating_history_items');
}
}
$ php artisan migrate
class EatingHistoryItem extends Model
{
protected $table = 'eating_history_items';
}
class EatingTemplateItem extends Model
{
protected $table = 'eating_template_items';
}
class User extends Authenticatable
{
public function EatingHistoryItems()
{
return $this->belongsToMany('App\Model\EatingHistoryItem');
}
}
データの検索は、テンプレートからだけでなく、ユーザーが入力したヒストリデータからも取得できることを想定して構築してみました。
あと、開発環境がUbuntu 18.04から20.04になったのですが、
PHPのバージョンが7.2から7.4に変わりました。
たぶん、このままだとLaravelからデータベース(mysql)にアクセスできない(could not find driver)ので、php-mysqlをインストールし直す必要があるようです。
$ sudo apt-get install php-mysql