Я пытаюсь получить данные, используя отношения Laravel Eloquent HasMany (обратный), но у меня нет доступа. Всякий раз, когда я пытаюсь, это показывает Попытка получить свойство ‘name’ не-объекта
У меня есть две модели. категория а также Статья. категория имеет много статьи. Вот модели:
Категория Модель
protected $fillable = [
'user_id', 'name',
];
public function articles()
{
return $this->hasMany('App\Models\Article');
}
Модель статьи
protected $fillable = [
'user_id', 'headline', 'summary', 'body', 'status', 'cover_image', 'image_caption', 'image_credit', 'cover_video', 'video_caption', 'video_credit', 'category', 'meta', 'tags',
];
public function category()
{
return $this->belongsTo('App\Models\Category','category');
}
Контроллер статьи
public function pendingposts()
{
$user = Auth::user();
$articles = Article::all();
return view('admin.article.pending-posts')->with(['user' => $user, 'articles' => $articles]);
}
Посмотреть лезвие (admin.article.pending-сообщения)
@foreach($articles->where('status', 'submitted')->sortByDesc('updated_at') as $article)
<tr>
<td >{{ $article->headline }}</td>
<td>{{ $article->category->name }} </td>
</tr>
@endforeach
здесь, в блейде, я не могу получить доступ к категории через красноречивую функцию BelongsTo, и у меня нет причины получать сообщение:
ErrorException (E_ERROR)
Попытка получить свойство name для необъекта (View:
C: \ XAMPP \ HTDOCS \ joliadmin \ ресурсы \ вид \ Admin \ статьи \ в ожидании-posts.blade.php)
Вы должны попробовать это:
public function pendingposts()
{
$user = Auth::user();
$articles = Article::with('category')
->where('status', 'submitted')
->sortByDesc('updated_at')
->get();
return view('admin.article.pending-posts')->with(compact('user', 'articles'));
}
@foreach($articles as $article)
<tr>
<td>{{ $article->headline }}</td>
<td>{{ $article->category->name }} </td>
</tr>
@endforeach
Обновленный ответ
Категория Модель
protected $fillable = [
'user_id', 'name',
];
public function article()
{
return $this->hasMany('App\Models\Article');
}
это сработало после изменения столбца «Article» таблицы «category» в «category_id». Спасибо за помощь.