# Laravel model で hidden に設定したカラムを一時解除

User model に複数の hidden 設定していますが、管理者が一覧を取得する際に hidden を解除するようにしたい!

# User Model

スマートで決めていきたいので、hidden を解除してみました。

namespace App\Models;

use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable, SoftDeletes;

    protected $hidden = [
        'password',
        'created_at',
        'updated_at',
        'deleted_at',
        'email_verified_at',
        'token',
        'is_active',
        'remember_token',
    ];

    protected $casts = [
        'password' => 'hashed',
        'is_active' => 'boolean',
    ];

    public function isActive()
    {
        return $this->is_active;
    }

# UserController

$user = $request->user();
$is_admin = $user->isAdmin();
if (!$is_admin) {
    return response()->json(['result' => false], 404);
}

$users = User::with('company')
    ->orderBy('id', 'desc')
    ->paginate($perPage, ['*'], 'page', $page)
    ->setHidden(['token', 'password', 'remember_token']);

return response()->json($users);

setHidden メソッドを使用して、非表示にしていたカラムを== 一時的に表示する ==ことができます。

# Laravel eloquent 関連

setVisible($attributes) コレクション内の各モデルの全ての visible 属性を一時的に上書きします。

$users = $users->setVisible(['id', 'name']);

setHidden($attributes) コレクション内の各モデルの全ての hidden 属性を一時的に上書きします。

$users = $users->setHidden(['email', 'password', 'remember_token']);

参考 Laravel Eloquent Collections (opens new window)

2024-04-02
  • laravel

関連記事

Laravel メンテナンスモード
Laravel でカテゴリー作成 テーブル構築と再帰クエリ
Laravel Queue で非同期処理
Laravel notification メール通知カスタマイズ
Laravel lang バリデーションメッセージを多言語対応
Laravel を API サーバーとしての初期設定
Laravel リクエストログ出力
Laravel 429 Too Many Requests
Laravel Email バリデーションについて
Laravel Sanctum 使って API トークン JWT 認証と SPA 認証
AWS SES メール開封確認  DB に集計
Laravel logger でエラーログを chatwork に自動送信
Laravel tinker 使って DB データベース接続とコマンド
Laravel Test についてのメモ
Laravel Log の基本設定&使い方
Laravel Sail で Docker 環境構築
Laravel Lumen Faker 日本語設定
laravel method の基本 get post put options
Laravel schedule 設定
Laravel eloquent model の規約
Laravel timestamp() auto update 有効化無効化
Laravel toSql パラメータ付きで出力
Laravel blade foreach loop と current url
laravel session を制する
Laravel 5.1 から 8.1 にバージョンアップ
Lumen と Laravel 違い比較
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定