我的数据库中有两个表,一个Articles表和一个Users表。文章由用户发布,并且存在名为“created_by”的外键,引用Users表中的“user_id”字段。
我的Laravel模型如下:
用户模型
class User extends Model
{
use Notifiable;
protected $primaryKey = 'user_id';
public function articles()
{
return $this->hasMany('App\Article', 'created_by', 'user_id');
}
}
文章模型
class Article extends Model
{
protected $primaryKey = 'article_id';
public function user()
{
return $this->belongsTo('App\User', 'created_by' 'user_id');
}
}
我有一个视图仪表板,显示所有文章以及发布该文章的人的姓名及其图像。
仪表板控制器
<?php
namespace App\Http\Controllers;
use App\User;
use App\Article;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function index (Request $request)
{
if($request->session()->get('username')) {
$articles = Article::all();
return view('dashboard', compact('articles'));
}
else
return redirect('login');
}
}
最后我的视图部分我正在获取'试图获取非对象属性'错误。
@foreach($articles as $article)
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-9">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">{{ $article->title }} </h3>
</div>
<div class="panel-body">
<p>
{{ $article->content }}
<br><br> - {{ $article->user->first_name }}
</p>
</div>
</div>
</div>
<div class="col-lg-1"><center><br><br>
<img src="{{ asset('images/people/$article->user->image') }}" class="img-circle" alt="Person"></center>
</div>
</div><br><br>
@endforeach
似乎是$ article-&gt; user-&gt; first_name我遇到了麻烦。如果我单独输入$ article-&gt; user,页面将加载但该区域中不会显示任何内容。
任何想法,我一直在寻找最近两个小时的解决方案。
答案 0 :(得分:0)
我认为您需要指定您希望用户加载文章,例如$articles = Article::with('user')->all();
在return语句前放一个dd($articles)
,你会看到你实际处理的是什么。
答案 1 :(得分:0)
Error in ifelse((master_strat_vect[13 * j]) >= cutoff_coop_ratio, c(valuable_strat_vect, :
replacement has length zero
In addition: Warning message:
In rep(no, length.out = length(ans)) :
'x' is NULL so the result will be NULL
编辑 尝试检查视图中$ article-&gt; user是否为null,因为如果没有为文章分配用户,那么您将“尝试获取非对象属性”错误
请在访问用户数据时进行额外检查。
{{$ article-&gt; user!== null? $ article-&gt; user-&gt; first_name:'User Not Found'}}
也为用户照片执行此操作
答案 2 :(得分:0)
请编辑您的控制器,请标记为已回答。
<?php
namespace App\Http\Controllers;
use App\User;
use App\Article;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function index (Request $request, Article $articles)
{
if($request->session()->get('username')) {
return view('dashboard')->with('articles', $articles->all() );
}
else
return redirect('login');
}
}