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