Laravel 5.2: как извлечь данные из одного красноречивого (hasOne) отношения

У меня есть две модели:
1. Конечно.
2. Плата.

Один курс имеет только одну плату. При вводе данных все в порядке, но когда я попытался получить доступ к данным комиссии, в столбце комиссии ничего не отображается. Как мне это решить?

Модель курса:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
protected $table='courses';
protected $fillable = ['name'];public function fee(){
return $this->belongsTo('App\Fee');
}

}

Плата Модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Fee extends Model
{
protected $table='fees';
protected $fillable = ['fee','course_id'];
public function course()
{
return $this->hasOne('App\Course');
}
}

контроллер:

public function listofCourse(){
$course=\App\Course::all();
return view('listofCourse',compact('course'));
}

Просмотр страницы:

<html>
<head>
<title> Course Details </title>

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>

</head>
<body><div class="container">
<h3> Student Details </h3>
<table  class="table table-striped table-bordered"  id="example">
<thead>
<tr>
<td>Serial No</td>
<td>Course Name</td>
<td>Course Fee</td></tr>
</thead>
<tbody>
<?php $i=1; ?>
@foreach($course as $row)

<tr>
<td>{{$i}}</td>
<td>{{$row->name }}</td>

<td>    @if($row->course)
{{$row->course->fee}}
@endif</td></tr>
<?php $i++; ?>

@endforeach
</tbody></table>

</div>

</body>
</html>

1

Решение

Кажется, вы неправильно написали отношения … просто сделайте это.

Иметь ввиду, Course Has The Fee средства Course это должно, поэтому отношение должно начинаться с Course сторона к Fee,

Ваша модель курса

class Course extends Model
{
protected $table='courses';
protected $fillable = ['name'];public function fee(){
return $this->hasOne('App\Fee','course_id', 'id');
}

}

Ваша модель оплаты

class Fee extends Model
{
protected $table='fees';
protected $fillable = ['fee','course_id'];
public function course()
{
return $this->belongsTO('App\Course', 'course_id', 'id');
}
}

Теперь вы можете получить отношения, сделав это.

public function listofCourse(){
$course=\App\Course::with('fee')->get();
// doing this for dumping purpose
echo "<pre>";
print_r($course->toArray()); // you will see the `fee` array
echo "</pre>";
die();
return view('listofCourse',compact('course'));
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]