首页 > 解决方案 > 如何过滤模型 laravel 中的自定义属性?

问题描述

//return
{
    "data": [
        {
            "tanggal_lahir": {
                "tanggal": "2000-01-29",
                "umur": 21
            }

//model
protected $appends = ['umur'];

public function getTanggalLahirAttribute($value){
    if(@$value){
        $umur = Carbon::parse($value)->diffInYears(Carbon::now());
        if(@$umur){
            return [
                'tanggal' => $value,
                'umur' => $umur
            ];
        }else{
            return $value;
        }
    }
}

在我的情况下如何查询过滤器umur?################################### ############# ######################

标签: phplaravel

解决方案


数据库不知道该umur属性,因此您无法在查询构建器中对其进行过滤。

// This won't work because the umur column does not exist in the database
Model::where('umur', 'something')->get();

但是,您可以使用 Collection 的where()方法来过滤结果或filter()更精确的过滤。

Model::get()
    ->where('umur', 'something');
Model::get()
    ->filter(function ($model) {
        return preg_match(pattern, $model->umur);
    });

推荐阅读