Я новичок с Laravel.
У меня есть эти модели:
- Модальность,
- ReportsGroup,
- Отчет,
- Пользователь
По сути, я пытаюсь построить некоторые отношения:
- Группа отчетов принадлежит Модальности,
- Модальность имеет много групп отчетов,
- Группа отчетов имеет много отчетов,
- Отчет принадлежит ReportsGroup,
- у отчета есть один пользователь,
- у пользователя много отчетов.
( жирным шрифтом обозначены отношения, которых я не могу достичь ...)
МОДЕЛЬ:
Modality.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Modality extends Model
{
public function reportGroups()
{
$this->hasMany(ReportsGroup::class);
}
}
ReportsGroup. php:
namespace App;
use Illuminate\Database\Eloquent\Model;
class ReportsGroup extends Model
{
public function modality()
{
return $this->belongsTo(Modality::class);
}
public function reports()
{
return $this->hasMany(Report::class);
}
}
Отчет. php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Report extends Model
{
public function author()
{
return $this->belongsTo(User::class, 'author_id');
}
public function reportsGroup()
{
return $this->belongsTo(ReportsGroup::class, 'reportsGroup_id');
}
}
МИГРАЦИИ:
Модальности таблицы:
public function up()
{
Schema::create('modalities', function (Blueprint $table) {
$table->id();
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->boolean('is_active')->default(true);
$table->boolean('is_free')->default(true);
$table->timestamps();
});
}
Таблица отчетовГруппы:
public function up()
{
Schema::create('reports_groups', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('modality_id');
$table->string('title');
$table->text('description')->nullable();
$table->timestamps();
});
}
Таблица отчетов
public function up()
{
Schema::create('reports', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('reportsGroup_id');
$table->string('title');
$table->text('indication')->nullable();
$table->text('technique')->nullable();
$table->text('conclusion')->nullable();
$table->text('recommandations')->nullable();
$table->unsignedBigInteger('author_id');
$table->boolean('is_visible')->defaut(true);
$table->boolean('is_free')->default(true);
$table->timestamps();
$table->index('reportsGroup_id');
$table->index('author_id');
});
}
Пользователи таблиц:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Как я уже писал, единственная связь, которая работает, - это то, что репо rtsGrouop принадлежит Модальности ...
Прошло много дней, я застрял с этой проблемой ...
Пожалуйста, помогите! Спасибо,
Николас