2016-05-27 7 views
1

У меня возникают проблемы с получением данных из внешнего ключа. уже делают отношения между 2 таблицы, но все-таки ошибка дала мне это «Попытка получить имущество не-объект»Попытка получить свойство не объекта [laravel 5.2]

это мои модели

public function tourism() 
{ 
    return $this->belongsTo('App\Models\Tourism','tourism_id'); 
} 

это мой контроллер

$ratings = Ratings::orderBy('rating','desc')->get(); 
    $ratings = $ratings->take(6); 

и это мое лезвие

<tbody> 
@if($ratings) 
     @foreach($ratings as $data) 
      <tr> 
       <td class="center">{{$data->id}}</td> 
       <td class="center">{{$data->tourism_id->nama}}</td> 
       <td class="center">{{$data->rating}}</td> 
      </tr> 
@endforeach 
@endif 
</tbody> 

спасибо

+1

показать полный метод пожалуйста, вы можете? у вас есть 'return View ('whatever') -> with ('ratings', $ ratings)' в вашем методе контроллера? –

+0

Есть ли у вас данные в вашем столе? – geckob

ответ

2

Попробуйте

<td class="center">{{$data->tourism->nama}}</td> 

РЕДАКТИРОВАНИЕ

Эта ситуация возникает, когда вы пытаетесь получить nama собственность. Но tourism_id это просто целое число, верно? Прежде всего, для доступа к соответствующей модели вы должны использовать метод отношений (tourism) вместо поля FK (tourism_id).
Тогда вы должны проверить, есть ли какая-либо связанная модель в tourims() или нет. Для этого я рекомендую вам использовать тройной оператор, так что ваша линия должна быть что-то вроде:

<td class="center">{{$data->tourism->first() ? $data->tourism->first()->nama : 'No tourism'}}</td> 
+0

большое спасибо, u r правый! – rinaldy31

0

Предполагая, что у вас уже есть этот контроллер и отношения модели, как указано выше:

function ratingsView() { 

$ratings = Ratings::orderBy('rating','desc')->get(); 
$ratings = $ratings->take(6); 

return View('rating')->with('ratings',$ratings); 

} 

В своих взглядах,

<tbody> 
@if($ratings) 
     @foreach($ratings as $data) 
      <tr> 
       <td class="center">{{$data->id}}</td> 
       <td class="center">{{$data->tourism()->first()->nama}}</td> 
       <td class="center">{{$data->rating}}</td> 
      </tr> 
@endforeach 
@endif 
</tbody> 

Убедитесь, что rating таблица есть id, rating, а также tourism_id атрибуты и ваш туристический стол имеет атрибут name, а также, конечно, данные в обеих таблицах.

Вам определенно необходимо проверить доступность данных и обработать их соответствующим образом. Но это другой вопрос

+0

why' -> tourism_id() -> first() '? '$ data-> tourism-> nama' будет работать отлично, я думаю, что его принадлежность –

+0

@AchrafKhouadja принадлежит к возврату класса BelongsTo. Нам нужно получить данные, используя первый метод. – geckob

+0

Это решение встречается с той же проблемой, если не будет связанных моделей. – huuuk

0

в контроллере использовать его как это:

$ratings = Ratings::orderBy('rating','desc')->take(6)->get(); 
Смежные вопросы