我刚刚完成我的博客,使用laravel,我想在其上添加评论功能,但我收到的这样的错误很少,任何人都可以帮助我吗? 抱歉我的英语,英语不是我的母语, 谢谢:))
$posts = Country::get(2)->posts;
// with where:
$posts = Country::where('name', '=', 'USA')->get()->posts;
这是我的AdminBlog.php模型
(1/1) ErrorException
Undefined offset: 1
Comment.php模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AdminBlog extends Model
{
protected $table = 'admin';
protected $fillable = ['title','text','images','slug'];
public function comment(){
return $this->hasMany('App\Comment');
}
}
BlogController.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
protected $table = 'comment';
protected $fillable = ['name','email','text','post_id'];
public function post(){
return $this->belongsTo('App\AdminBlog');
}
}
show.blade.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\AdminBlog;
use App\Comment;
class BlogController extends Controller
{
//Index
public function index(){
$post = AdminBlog::all();
return view('blog/index', compact('post'));
}
//Show
public function show($id){
$post = AdminBlog::findOrFail($id);
$comment = Comment::all();
//dd($comment);
return view('blog/show', ['post' => $post,
'comment' => $comment]);
}
}
答案 0 :(得分:1)
您应该使用:
<div class="col-md-12 post-comment-show">
@foreach($post->comment as $list)
<p>{{ $list->text }}</p>
@foreach
</div>
请注意,您已使用comment()
。此外,您应为hasMany
关系使用复数名称,因此comment
应为comments
。
此外,在show方法中,您应该使用以下内容:
public function show($id)
{
$post = AdminBlog::with('comment')->findOrFail($id);
return view('blog/show', ['post' => $post]);
}
答案 1 :(得分:1)
尝试以下
$post->comment()->get()
或
$post->comment
当调用与()
的关系时,它返回查询构建器的实例并允许您过滤该对象。如果在没有()
的情况下删除它,则会返回一个可访问数组的集合
另一个建议是,如果你有很多评论,你应该将你的关系命名为复数。
在这种情况下:
public function comments(){
return $this->hasMany('App\Comment');
}
// Use it like this
$post->comments
答案 2 :(得分:0)
您需要更改您的节目功能:
public function show($id){
$post = AdminBlog::findOrFail($id);
$comment = Comment::all();
//dd($comment);
return view('blog/show', ['post' => $post,
'comment' => $comment]);
}
以强>
public function show($id){
$post = AdminBlog::with('comment')->where('admin.id',$id)->get();
return view('blog/show', compact('post'));
}
希望这对你有用!