$posts = Post::where('content', 'like', '%'.$keyword.'%')->paginate(5);
когда я использую приведенный выше код Laravel, на странице отображается:
Сериализация «Закрытие» не допускается
является ли приведенный выше код запрещенным для записи, так как у larvel doc, похоже, нет этой информации.
добавлять:
когда я изменю это на
$posts = Post::where('content', 'like', '%'.$keyword.'%')->get();
это показывает другую ошибку:
Вызов неопределенного метода Illuminate \ Database \ Eloquent \ Collection :: links ()
Я искал в Интернете, и он сказал мне, чтобы добавить paginate (), который может решить проблему с нумерацией страниц. но все еще не могу
весь код
public function search(){
$keyword = Input::get('keyword');
if(empty($keyword)){
return Redirect::route('postIndex');
//->with('message',array('type' => 'alert', 'content' => '不能为空'))
}
$posts = Post::where('content', 'like', '%'.$keyword.'%')->paginate(5);
return Redirect::route('searchResults')->with('posts', $posts);
}
public function searchResults(){
return View::make('frontend.search.search',['posts' => Session::get('posts')]);
}
мои маршруты:
Route::post('post/search', array(
'before' => 'csrf',
'uses' => 'SearchController@search',
'as' => 'search'
));
Route::get('post/searchResults', array(
'uses' => 'SearchController@searchResults',
'as' => 'searchResults'
));
Добавлять:
пост модель
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Post extends Eloquent{
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
public static $rules = array(
'title' => 'required|between:2,80',//unique, 参考users表的设置
'summary' => 'required|between:20,300',
'content' => 'required|min:50',
'tags' => 'required|min:2',
);
protected $fillable = ['title', 'content','summary', 'category'];
public function tags()
{
return $this->belongsToMany('Tag');
}
public function category()
{
return $this->belongsTo('Category');
}
public function user()
{
return $this->belongsTo('User');
}
public function reviews(){
return $this->hasMany('Review');//Review is the model of Review
}
public function getNumCommentsStr()
{
$num = $this->reviews()->count();
return $num;
}
}
// содержимое формы $ ключевое слово:
{{ Form::open(array('url'=>'post/search','method' => 'post','id'=>'search','class'=>'search'))}}
{{ Form::token()}}
<div class="keywordContainer">
{{Form::text('keyword', '', array('id'=>'keyword', 'placeholder'=>'keyword'))}}
<i class="fa fa-search"></i>
</div>
{{ Form::submit('提交',array('class'=>''))}}
{{Form::close()}}
Я думаю, что проблема здесь:
return Redirect::route('searchResults')->with('posts', $posts);
Попробуйте изменить его с помощью:
return Redirect::route('searchResults')->with('posts', $posts->toArray());
И в searchResults
менять:
return View::make('frontend.search.search',['posts' => Session::get('posts')]);
в:
dd(Session::get('posts'));
чтобы убедиться, где проблема возникает — в первом методе или в методе после перенаправления
Других решений пока нет …