Я довольно новичок в laravel
, и я узнаю об отношениях в eloquent
.У меня есть 3 модели
Report
ReportModule
ReportSubModule
Отношения такие
SubModule hasMany Module
Report hasMany ReportModule
Report hasMany ReportSubModule
Когда я пытаюсь получить объект ReportSubModule
из Report
на мой взгляд, у меня нет ошибки, но когда я пытаюсьчтобы получить ReportModule
от Report
объекта, на мой взгляд, я получаю ошибку Trying to get property of non-object
.Если я печатаю объект ReportModule
, я вижу json
и думаю, что получаю объект, но не могу получить его свойство
Вот мой код
Пространство имен Report (Model) App;
use Illuminate\Database\Eloquent\Model;
class Report extends Model
{
public function report_module(){
//module_id is column in reports table that corresponds to
//id column in report_modules table
return $this->belongsTo(ReportModule::class,'module_id');
}
public function sub_module(){
//sub_module_id is column in reports table that corresponds to
//id column in report_modules table
return $this->belongsTo(ReportSubModule::class,'sub_module_id');
}
}
ReportModule (модель)
namespace App;
use Illuminate\Database\Eloquent\Model;
class ReportModule extends Model
{
public function subModules(){
return $this->hasMany(ReportSubModule::class);
}
public function reports(){
return $this->hasMany(Report::class);
}
}
ReportSubModule (модель)
namespace App;
use Illuminate\Database\Eloquent\Model;
class ReportSubModule extends Model
{
public function module(){
return $this->belongsTo(ReportModule::class);
}
public function reports(){
return $this->hasMany(Report::class);
}
}
view
<a href="{{route('reports.edit',$report->id)}}"><h4> {{$report ->report_name}} </h4></a>
<small>{{ $report->sub_module->sub_module_name }} </small><br/><br/>
<?php
$m = $report->report_module;
<!-- i get error on below line -->
echo $m->module_name;
?>
Что я делаю неправильноздесь. Я должен иметь возможность получить свойство объекта ReportModule
, как и ReportSubModule
, но это не так. Пожалуйста, помогите мне решить эту проблему.