Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 21.12.2016 14:53:18

Whoops, looks like something went wrong. при связи модели

Добрый день, не могу разобраться в чем может быть проблема, вроде бы все делаю по хелперу
Вот такую ошибку выдает в виде

Whoops, looks like something went wrong.
3/3 ErrorException in be1c95c0877da96c712f88e5b364d28e2dd6416d.php line 132: Trying to get property of non-object (View: C:\OpenServer\domains\lading.loc\resources\views\site\content.blade.php) (View: C:\OpenServer\domains\lading.loc\resources\views\site\content.blade.php)

Вот Контролер который обрабатывает этот вид

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Page;

use App\Service;

use App\Client;

use App\Team;

use App\Portfolio;

use App\Category;

class IndexController extends Controller
{
    public function index()
    {
    	$pages = Page::all();
        $service = Service::all();
        $client  = Client::all();
        $teams	 = Team::all();
        $categorys = Category::all();
        $portfolio = Portfolio::with('category')->get();

       

        $data = [ 

        			'pages'     => $pages, 
        			'service'	=> $service,
        			'client' 	=> $client,
        			'teams'		=> $teams,
        			'categorys' => $categorys,
                    'portfolio' => $portfolio,
        		 ];
    	return view('site.index', $data);
    }
}

А вот модели которые связаны друг с другом

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Portfolio extends Model
{
    
    protected $table = "portfolios";
    
    public function category()
    {
    	return $this->belongsTo('App\Category');
    }
}

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    
    protected $table = "categorys";

    public function portfolio()
    {

    	return $this->hasMany('App\Portfolio', 'categorys_id');
    }
}

А вот вид где выдает ошибку

 
      @foreach($portfolio as $item)

      <div style=" {{ $item->category->name }}">
       
            <h4 class="project_name">{{ $item->title }}</h4>
          </div>
        </div>
        </div>
        @endforeach

Не в сети

#2 21.12.2016 16:11:25

Re: Whoops, looks like something went wrong. при связи модели

Вы опять слово с ошибкой написали, может, в этом дело? Вам уже говорили про это.

Не в сети

#3 21.12.2016 16:20:05

Re: Whoops, looks like something went wrong. при связи модели

Androbim пишет:

Вы опять слово с ошибкой написали, может, в этом дело? Вам уже говорили про это.

Я же указал таблицу, какую мне надо в свойстве $table в модели Category

Не в сети

#4 21.12.2016 16:24:18

Re: Whoops, looks like something went wrong. при связи модели

как я понял ругается на  $item->category->name

Не в сети

#5 21.12.2016 16:31:52

Re: Whoops, looks like something went wrong. при связи модели

Так у Вас это слово "category" везде по-разному написано, или нет?

Не в сети

#6 21.12.2016 17:14:54

Re: Whoops, looks like something went wrong. при связи модели

Да нет везде одинаково

Не в сети

#7 21.12.2016 17:50:08

Re: Whoops, looks like something went wrong. при связи модели

Если показан весь код, то проблема, скорее всего, в {{ $item->category->name }}

Посмотреть объект можно с помощью dd($portfolio). Видимо, в одном из портфолио связь category равна null. Лечить нужно проверкой:

{{ is_null($item->category) ? 'No category' : $item->category->name }}

Не в сети

#8 21.12.2016 19:39:19

Re: Whoops, looks like something went wrong. при связи модели

я когда создавал миграцию, не ставил что поле категория в таблице портфолио была равна нолю

Не в сети

#9 21.12.2016 20:11:53

Re: Whoops, looks like something went wrong. при связи модели

Ну, поле в таблице, да, это нормально. А метод не обрабатывает пустое значение, поэтому нужна проверка.

Не в сети

#10 22.12.2016 09:30:51

Re: Whoops, looks like something went wrong. при связи модели

При вызове

dd($categorys->portfolio);

Выдате такую ошибку

ErrorException in IndexController.php line 51: Undefined property: Illuminate\Database\Eloquent\Collection::$portfolio

Не в сети

#11 22.12.2016 09:31:10

Re: Whoops, looks like something went wrong. при связи модели

Походу что то с со связью таблиц

Не в сети

#12 22.12.2016 10:37:00

Re: Whoops, looks like something went wrong. при связи модели

сейчас попробую переделать таблицы categorios и portfolios

Не в сети

#13 22.12.2016 11:30:07

Re: Whoops, looks like something went wrong. при связи модели

  1. Category
  2. categorys
  3. categorios

«Categories» же!

  1. portfolios

А это верно.

Не в сети

#14 22.12.2016 13:10:48

Re: Whoops, looks like something went wrong. при связи модели

Переделал модили и таблици и все равно такая ошибка
ErrorException in IndexController.php line 33: Undefined property: Illuminate\Database\Eloquent\Collection::$category

Не в сети

#15 22.12.2016 19:50:24

Re: Whoops, looks like something went wrong. при связи модели

Грохни всё и начни с нуля. Руками БЕЗ копипаста.

Модель должна зваться Mymodel (с большой буквы)
Таблица согласно множественному числу от имени модели mymodels (с маленькой буквы)
(Category -> categories)

Не в сети

#16 22.12.2016 21:10:44

Re: Whoops, looks like something went wrong. при связи модели

сделал тоже самое ((

Не в сети

Подвал раздела