我正在尝试对所有评论进行搜索。我遇到许多问题。我将有两个搜索查询,一个对评论ID运行搜索,另一个对通过user_id FK连接到评论的用户名运行搜索。
当前我遇到了问题:
Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in
表格: 评论-ID,评论,用户ID,时间戳 用户-ID,名称,用户名
型号:
class Comment extends Model
{
public function author()
{
return $this->belongsTo('App\User','user_id');
}
}
控制器:
public function index(Request $request)
{
$comment =Comment::paginate(10);
$id=$request->input('id');
$name=$request->input('username');
if(!empty($id)){
$comment->where('id', $request->input('id') )->get();
}
if(!empty($name)){
$comment->where($comment->author->username, 'LIKE', '%'.$name.'%')->get();
}
return view('comments.index')->withComment($comment);
}
查看:
<div class="panel-body">
{!! Form::open(['route' => 'comments.index', 'method' => 'GET']) !!}
<div class="col-md-5">
{!! Form::label('id', 'Search By ID:') !!}
{!! Form::text('id', null, array('class' => 'form-control')) !!}
</div>
<div class="col-md-5">
{!! Form::label('username', 'Search By Username:') !!}
{!! Form::text('username', null, array('class' => 'form-control')) !!}
</div>
<div class="col-md-2">
{!! Form::submit('Find Comments', array('class' => 'btn btn-send ')) !!}
</div>
{!!Form::close()!!}
</div>
@foreach($comment as $comments)
//data
@endforeach
答案 0 :(得分:1)
paginate
函数将立即为您执行查询,因此之后您将使用Collection functions。集合上的get
函数期望键作为参数,这就是问题所在。
要解决此问题,您可以删除->get()
或在查询结束时使用paginate
函数,如下所示。
$comment = Comment::query();
$id = $request->input('id');
$name = $request->input('username');
if (!empty($id)) {
$comment = $comment->where('id', $request->input('id'));
}
$result = $comment->paginate(10);
答案 1 :(得分:0)
由于您已分页
public function index(Request $request)
{
$comment = new Comment();
$id=$request->input('id');
$name=$request->input('username');
if(!empty($id)){
$comment->where('id', $request->input('id') )->get();
}
if(!empty($name)){
$comment->where($comment->author->username, 'LIKE', '%'.$name.'%');
}
return view('comments.index')->withComment($comment->paginate(10));
}
您无法分页并再次获取它,就像在同一对象上两次使用SELECT语句一样。