javascript

871 经验值

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)方法就用不了了啊?!

问题是:
怎样才能用添加的属性 total 进行排序

场景:

Users表

ID | 姓名 | 语言 | 数学 | 英语
-----------------------------------------
1  | 张三  | 99  | 78  | 66
-----------------------------------------
2  | 李四  | 50  | 100 | 87
-----------------------------------------
3  | 王五  | 88  | 91  | 87
-----------------------------------------

添加的属性 total

class User extends Model
{
    protected $appends = ['total'];

    public function getTotalAttribute () {
        $yuwen = $this->attributes['yuwen'];
        $shuxue = $this->attributes['shuxue'];
        $yingyu = $this->attributes['yingyu'];
        return $yunwen + $shuxue + $yingyu;
    }
}

如果用语文的分数排序时是:

class UserController extends Controller
{
    public function userListApi()
    {
        $datas = User::orderBy('yuwen', 'dsec')->paginate(10);
        return response()->json($datas);
    }
}

怎么样才能让添加的属性 total 参与排序呢?