搜索查询问题

时间:2018-06-19 14:47:18

标签: laravel laravel-5 laravel-5.4

我正在尝试对所有评论进行搜索。我遇到许多问题。我将有两个搜索查询,一个对评论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

2 个答案:

答案 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语句一样。