Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день, не могу разобраться в чем может быть проблема, вроде бы все делаю по хелперу
Вот такую ошибку выдает в виде
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
Не в сети
Вы опять слово с ошибкой написали, может, в этом дело? Вам уже говорили про это.
Не в сети
Вы опять слово с ошибкой написали, может, в этом дело? Вам уже говорили про это.
Я же указал таблицу, какую мне надо в свойстве $table в модели Category
Не в сети
как я понял ругается на $item->category->name
Не в сети
Так у Вас это слово "category" везде по-разному написано, или нет?
Не в сети
Да нет везде одинаково
Не в сети
Если показан весь код, то проблема, скорее всего, в {{ $item->category->name }}
Посмотреть объект можно с помощью dd($portfolio). Видимо, в одном из портфолио связь category равна null. Лечить нужно проверкой:
{{ is_null($item->category) ? 'No category' : $item->category->name }}
Не в сети
я когда создавал миграцию, не ставил что поле категория в таблице портфолио была равна нолю
Не в сети
Ну, поле в таблице, да, это нормально. А метод не обрабатывает пустое значение, поэтому нужна проверка.
Не в сети
При вызове
dd($categorys->portfolio);
Выдате такую ошибку
ErrorException in IndexController.php line 51: Undefined property: Illuminate\Database\Eloquent\Collection::$portfolio
Не в сети
Походу что то с со связью таблиц
Не в сети
сейчас попробую переделать таблицы categorios и portfolios
Не в сети
Не в сети
Переделал модили и таблици и все равно такая ошибка
ErrorException in IndexController.php line 33: Undefined property: Illuminate\Database\Eloquent\Collection::$category
Не в сети
Грохни всё и начни с нуля. Руками БЕЗ копипаста.
Модель должна зваться Mymodel (с большой буквы)
Таблица согласно множественному числу от имени модели mymodels (с маленькой буквы)
(Category -> categories)
Не в сети
сделал тоже самое ((
Не в сети