私の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));
}
}
しかし、これはうまくいきません。何も保存されません。ユーザーがプロファイルで現在の情報を更新するたびに別のレポートを保存する方法。
どんな助けでも大歓迎です