У меня есть следующие таблицы в моем проекте laravel
users
profiles
fitness_reports
Каждый профиль принадлежит пользователю, а каждый фитнес-отчет принадлежит профилю.Пользователь может иметь один профиль и несколько фитнес-отчетов, связанных через идентификатор профиля.Это необходимо для показа пользователям еженедельных отчетов.
Таблица профилей содержит столбцы, такие как user_id, dob, возраст, рост, вес, талия, бедра, шея, упражнение_уровень, которые вводятся пользователем и правильно хранятся втаблица профилей.Это прекрасно работает.
Таблица 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));
}
}
Но это не работает.Ничто не спасается.Как сохранить другой отчет, когда пользователь обновил свою текущую информацию в профиле.
Любая помощь приветствуется