Laravel-仅搜索用户ID帖子

时间:2019-08-05 21:51:26

标签: laravel search

因此,我在laravel项目中进行了此搜索,所有搜索均正常进行 很好,但是当我搜索它时,它会向我显示所有用户的所有帖子。我只需要搜索该用户创建的帖子。有什么想法吗?

这是我在web.php的路线:

Route::get('/search', 'PagesController@search');

Route::post('/search',function(){
    $q = Input::get ( 'q' );
    $post = Post::where('ime','LIKE', '%'.$q.'%')->orWhere('datum_preuz','LIKE', '%'.$q.'%')->get();
    if(count($post) > 0)
        return view('search')->withDetails($post)->withQuery ( $q );
    else return view ('search')->withMessage('Nema rezultata Vaše pretrage. Probajte ponovo!');
});

这是我的PagesController public function search()

public function search(){
        $user_id = auth()->user()->id;
        $user = User::find($user_id);
        return view('search')->with('posts', $user->posts);
}

这是在我的search.blade.php中:

<form action="{{url('/search')}}" method="POST" role="search">
            {{ csrf_field() }}
            <div class="input-group">
                <input type="text" class="form-control" name="q" placeholder="Traži..." id="search">
                <button type="submit" class="searchbutton"><i class="fa fa-search"></i></button>
            </div>
        </form>
        </br></br>
        @if(isset($details))
           <p class="searchp">Rezultati vaše pretrage <b> {{$query}} </b>: </p>
            </br>
           <table>
                  <thead>
                      <tr>
                        <th>BR.KESICE</th>
                        <th>IME I PREZIME</th>
                        <th>BR.TELEFONA</th>
                        <th>POSAO</th>
                        <th>CIJENA</th>
                        <th>PLACANJE</th>
                        <th>POPUST</th>
                        <th>DATUM PREUZ.</th>
                        <th>DATUM IZDAV.</th>
                        <th>SMJENA</th>
                        <th>RADNIK</th>
                        <th>STATUS</th>
                        <th>IZMIJENI</th>
                      </tr>
                  </thead>
                  <tbody>
                    @foreach($details as $post)
                    <tr>
                        <td>{{$post->br_kesice}}</td>
                        <td>{{$post->ime}}</td>
                        <td>{{$post->br_telefona}}</td>
                        <td>{{$post->posao}}</td>
                        <td>{{$post->cijena}}</td>
                        <td>{{$post->placanje}}</td>
                        <td>{{$post->popust}}</td>
                        <td>{{$post->datum_preuz}}</td>

                        @if($post->status == 1)
                            <td>/</td>
                        @else
                            <td>{{$post->datum_izdav}}</td>
                        @endif
                        <td>{{$post->smjena}}</td>
                        <td>{{$post->radnik}}</td>
                        <td>
                            @if($post->status == 3)
                            <span class="label label-primary" id="statusdeaktivan">Deaktivan</span>
                            @elseif($post->status == 1)
                            <span class="label label-success" id="statusaktivan">Aktivan</span>
                            @endif
                        </td>

                        @if($post->status == 3)

                        @else
                        <td><a href="posts/{{$post->id}}/edit" class="edit"><i class="far fa-edit"></i></a></td>
                        @endif
                    </tr>
                   @endforeach
                  </tbody>


                 @elseif(isset($message)) 
                       <p class="searchp"> {{$message}} </p>

           </table>
@endif

已编辑 这是我与用户模型的关系:

public function posts(){
        return $this->hasMany('App\Post');
}

这是我与Post模型的关系:

public function user(){
        return $this->belongsTo('App\User');
    }

1 个答案:

答案 0 :(得分:0)

您可以尝试使用在posts()模型上已经拥有的User关系,即:

$post = auth()->user()->posts()->where('ime','LIKE', '%'.$q.'%')->orWhere('datum_preuz','LIKE', '%'.$q.'%')->get();