问题1.把收藏表的数据按时间倒序排列
// User.php
class User extends Model
{
public function favorites()
{
return $this->hasMany('App\Favorites')->orderBy('created_at', 'desc');
}
}
问题2.收藏表里的数据使用paginate分页
// user.blade.php
@foreach($users as $user)
<h4>{$user->name}的收藏列表:</h4>
<ul>
@foreach($user->favorites as $favorite)
<li>{$favorite->site_title}: {$favorite->site_url}</li>
@endforeach
</ul>
{$user->favorites()->links()}
@endforeach
between:min,max
字段值需介于指定的 min 和 max 值之间。字串、数值或是文件都是用同样的方式来进行验证。
digits_between:min,max
字段值需为数字,且长度需介于 min 与 max 之间。
还可以这样!!!又学习了,谢了哈
方案一:
在 UserRequest 中想办法
protected $create = [
'email'=> 'required|unique:users',
'name'=> 'required',
...
];
protected $update = [
'name'=> 'required',
...
];
public function rules()
{
if ($this->isMethod('get')) return [];
if ($this->is('*/create')) return $this->create;
else if ($this->is('*/update')) return $this->update;
else return [];
}
方案二:
在 UserController 中想办法
public function update(Request $request)
{
$form_data = $request->except(['_token', 'email']);
$user = User::where('email', $request->email)->first();
$user->fill($form_data);
$user->save();
}
方案三:
在 update 视图中想办法
<form action="{ route('update') }" method="POST">
Email: <input type="text" name="email" value="{ $user->email }" disabled>
Name: <input type="text" name="name" value="{ $user->name }">
...
</form>
访问器创建成功后,如果该添加属性想每次都出现在查询结果中时:
protected $appends = ['first_name'];
public function getFirstNameAttribute() {
....
}
否则的话,并不需要向appends
添加,直接调取就可以:
$user = User::first();
dd($user->first_name);
找到一个解决这类问题的好方法,特来和你分享一下!
利用 Eloquent 中的 orderByRaw
User::orderByRaw('(yuwen + shuxue + yingyu) desc')->paginate(10);
嗯。这到是一个好办法!谢谢啦!
->paginate(10)->sortBy(‘total’);
这样是不是只是10笔数据的 total 排序呢?
->paginate(10)->sortBy(‘total’);
这样是不是只是10笔数据的 total 排序呢?
->paginate(10)->sortBy(‘total’);
这样是不是只是10笔数据的 total 排序呢?
谢谢回答!
我试了一下,如果用collection的sortBy的话
->paginate(10)方法就用不了了啊?!