前提・実現したいこと
Laravelでリレーションで1対1で分割したテーブルから値を参照したいです。
分割しなかった場合admin
というカラムでtrueの場合だけというGateを以下の様に記述することができたのですがadmin
というカラムを分けてしまった時以下のコードでは正しく設置できなくなってしまっているため、どの様に行えば良いのでしょうか?
PHP
1 Gate::define('admin', function ($user) { 2 return $user->admin === true; 3 });
user_table
user_table.php
1 $table->id(); 2 $table->string('name'); 3 $table->string('email')->unique(); 4 $table->timestamp('email_verified_at')->nullable(); 5 $table->string('password'); 6 $table->rememberToken(); 7 $table->timestamps();
account_tabel
account_table
1 $table->id(); 2 $table->unsignedBigInteger('user_id'); 3 $table->boolean('admin')->default(false); 4 $table->timestamps(); 5 $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
リレーション定義
PHP
1 public function account() 2 { 3 return $this->hasOne('App\Account'); 4 }
リレーション先の取得
userのidが1の場合
User::find(1)->account;
しかし上記を実行したら以下の警告が表示されます。
PHP Notice: PDO::prepare(): send of 57 bytes failed with errno=32 Broken pipe in /Laravel_practice/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 331
試したこと
PHP
1 return User::find(Auth::id())->account['admin'] === true; 2
回答1件
あなたの回答
tips
プレビュー