javascript

1133 经验值

问题是:
怎样才能用添加的属性 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 参与排序呢?

场景是:

在前台显示一个Users表里的tel字段时,电话号的后4位用*来替换。

我使用的方法是:

class User extends Model
{
    public function getTelAttribute () {
        return substr($this->attributes['tel'], 0, 7) . '****';
    }
}

如果这样写,一般的情况下是没问题的。

但是,当用户通过表单修改个人信息时,input中所显示的电话是

例:1391234**

我想解决的是:

在使用读取器(getAttribute)的情况下,如何在一定的条件下
一时取消到读取器(getAttribute)的动作,从而达到在表单中显示完整的电话号码呢?

想到解决的方法了。哎,是自已专牛解尖了。

前台显示时用

class User extends Model
{
    public function getSecretAttribute () {
        return substr($this->attributes['tel'], 0, 7) . '****';
    }
}


User::find($id)->selete('secret')->first();

表单里使用时,提取原字段名

User::find($id)->selete('tel')->first();

谢谢,
还有一个问题,就是Email 服务器那个更好啊,我现在用的是阿里云,限制很多,通过服务器向同一个用户连续发送多封mail时会被强行限制的。

你好!
除了阿里云和腾讯云以外有什么性价比更好的Laravel服务器?
本网站用的是什么服务器啊?

谁能告诉我这个问题在哪节的视频里出现过!

表单为:

<form action="/" method="POST">
    <input type="text" name="name">
    <input type="text" name="pass">
</form>

而数据库中的字段名为 usename和 password

function create () {
    $input = Input::all();
    $model = new User;
    $model->usename = $input->get('name');
    $model->password = $input->get('pass');
    $model->save();
}

除了以上的方法外,是否通过make:request可以达到同样效果呢?

模糊的记得在某期的视频里站长好像提到过。但是真的找不到是哪个视频了。

如果谁知道是哪个视频,或者知道更好的解决方法吗?

先谢谢了。

Jelly, 你好!
这道题用sql,我折腾出来了!又试了试collection,基本上也做出来了。
但问题出现在分页上。
如果是用sql的话, ->paginate() 这个方法是可以使用的。
但collection里貌似没有这个方法吧?!

这个 ->combine 方法和 array_combine 是等同的吧?
学习了,谢谢~!