laravel 如何把 belongsTo 的某字段隐藏掉?

原来的:
laravel 如何把 belongsTo 的某字段隐藏掉?

这样做可以把某些属性隐藏掉:

laravel 如何把 belongsTo 的某字段隐藏掉?

laravel 如何把 belongsTo 的某字段隐藏掉?

————————————
但我想把 belongsTo 来的 user_id 过滤掉,要怎么过滤?

laravel 如何把 belongsTo 的某字段隐藏掉?

laravel 如何把 belongsTo 的某字段隐藏掉?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

方案一:

在模型中的$hidden属性中加入需要隐藏的字段:

    protected $hidden = [
        'user_id',
    ];

这种是在toArray()时才会将字段隐藏,但这种会对所有查询都进行隐藏,会影响到你已经写好的其他接口。

方案二:

获取到原始数据后,在集合中操作,然后就可以继续用makeHidden了:

    $result = Model::with(['belongs_to_raw_fragment'])
    ->get()
    ->map(function($model){
        return $model->setRelation('belongs_to_raw_fragment', $model->belongs_to_raw_fragment->makeHidden(['user_id']));
    });
    dd($result->toArray());
3年前 评论
ShiKi

model内自定义方法

    $model = new Model();
    $model->field('user_id');
    use Illuminate\Support\Facades\Schema;

    public function field($filed)
    {
        $columns = Schema::getColumnListing($this->table);
        foreach ($columns as $key => $val)
        {
            if(is_array($filed)){
                if(in_array($val , $filed)) unset($columns[$key]);
            }else {
                if($val == $filed) unset($columns[$key]);
            }
        }
        return $columns;
    }
3年前 评论

with 限定 字段

$result  = Model::with(['belongs_to_raw_fragment:id,title,raw_fragment_id'])->get()->toArray();

因为关联方法返回的是一个构造器,所以也可以用构造器的方法。

public function belongs_to_raw_fragment()
{
    return $this->belongsTo(::class)->select(['id','title','raw_fragment_id']);
}

隐藏 JSON 属性 不知道可不可以。

3年前 评论
lyxxxh (作者) 3年前
LiamHao 3年前
lyxxxh (作者) 3年前
LiamHao 3年前
LiamHao 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!