0

私のlaravelプロジェクトには次のテーブルがあります

users
profiles
fitness_reports

各プロファイルはユーザーに属し、各フィットネス レポートはプロファイルに属します。ユーザーは、プロファイル ID を介して接続された 1 つのプロファイルと複数のフィットネス レポートを持つことができます。これは、ユーザーに週次レポートを表示するためです。

Profiles テーブルには、ユーザーが入力した user_id、dob、age、height、weight、west、hip、neck、execute_level などの列があり、profiles テーブルに適切に保存されます。これはうまくいきます。

fitness_reports テーブルには、profile_id、「bmi」、「bmr」、「bai」、「weight_status」、「fat_us」、「fat_bmi」、「fat_mass」、「lean_mass」、「fat_category」などの列があります。これらのフィールドはすべて計算フィールドであり、プロファイル テーブルが更新されるたびに自動的に計算される必要があります。

以前は、以下でうまく機能する計算フィールドを持つ単一のモデルがありました

public function getBmiAttribute() {
    return ($this->weight / ($this->height * $this->height));
}

次に、コントローラーコードと同じプロファイルモデルに保存します

public function store(Request $request)
  {
      $profile = new Profile();
      $profile->weight = $request->get('weight');
      $profile->height = $request->get('height');
      $profile->dob = $request->get('dob');
      $profile->age;
      $profile->bmi;
      $profile->save();
      return back()->with('success', 'Your profile has been updated.');
  }

しかし、週次レポートを追跡するために別の fitness_reports テーブルを作成したためです。このシナリオで同じことを行う方法。

私はこれを試しました

use App\Models\Profile;

class FitnessReport extends Model
{
  .....

  public function getBmiAttribute($value)
   {
    return ($this->weight / ($this->height * $this->height));
   }
}

しかし、これはうまくいきません。何も保存されません。ユーザーがプロファイルで現在の情報を更新するたびに別のレポートを保存する方法。

どんな助けでも大歓迎です

4

2 に答える 2