2017-08-17 22 views
0

私はUserテーブルからのようなブレードでデータベースからデータを取得する方法を知られているしたいと思います:Laravelブレードビューでデータベースからレコードを取得

{{ Auth::user()->name }} 

私はテーブルuser_settings

を持って、私はレコードを取得したいと思いますこのテーブルから次のようなユーザーIDをログに記録します。

{{ UserSettings::user()->my_field }} 

どうすればいいですか?

+1

試し{{他に

UserSettings::current() 

を、それがより良いユーザーモデルにone-to-one relationshipを使用するようになりましたUserSettings :: user() - > my_field - > get()}} –

+0

return vie w( "あなたのビュー"、["userSettings" => UserSettings :: user()]);今あなたのビューで$ userSettigsが利用可能です – jgetner

+2

ビューレイヤーからデータベース呼び出しを作成せず、コントローラからデータを渡します。 – Steve

答えて

0

は、ブレード・ビューデフォルトで

{{ \App\UserSettings::where('user_id',Auth::user()->id)->first()->my_field }} 

に、モデルファイルは、アプリケーションフォルダ内にある、これを試してみてください。

データベーステーブルへのこのような直接アクセスはいえ好まれていない、あなたのようなコントローラー関数から変数としてこれを返すことができ、

$field = \App\UserSettings::where('user_id',Auth::user()->id)->first()->my_field; 
return view('view_name',comapact('field')); 

{{$field}} 

のようなブレードでの使用のもう一つの良い方法がありますOrkhanによって投稿された別の答えでは雄弁な関係を使用しています。 ご理解いただきたいと思います。

+0

はい、私の 'UserSettings'モデルでは' user() '関数がなく、'未定義メソッド呼び出し\データベース\ Query \ Builder :: user() 'を取得します – lukassz

+0

ユーザー設定でuser_idを持っていましたか?テーブル? –

+0

はい私はこのフィールドを持っています – lukassz

1

あなたは、認証されたユーザーに関連付けられてUserSettings取得する必要があります:あなたはあなたのためにそれを返すためにcurrent()をという名前のメソッドを定義したことができ

UserSettings::where('user_id', Auth::id())->first()->my_field 

を。

class UserSettings extends Model 
{ 
    public static function current() 
    { 
     return UserSettings::where('user_id', Auth::id())->first() 
    } 
} 

は、次に使用:

class User extends Model 
{ 
    public function settings() 
    { 
     return $this->hasOne('App\UserSettings'); 
    } 
} 

が続いて使用します:

Auth::user()->settings->my_field 
関連する問題