2016-08-16 4 views
0

私は2つのテーブル方法:指定された列別のテーブルからデータを取得するには?

  1. //ユーザー ID ユーザ名 パスワードを持っている

  2. //プロファイル のuser_id

は、私はそれがUSER_IDたプロファイル情報を取得したい ロゴログされたユーザーIDと同じですが、私はそれを行うことはできません。 どうすればいいですか?

/プロファイルモデル

<?php 

namespace App\Http\Models; 

use Illuminate\Database\Eloquent\Model; 

class Profile extends Model 
{ 
    public function user() 
    { 
     $this->belongsTo('App\User'); 
    } 
} 

//クライアントコントローラ

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Models\Profile as Profile; 
use App\Http\Requests; 
use Auth; 

class ClientController extends Controller 
{ 
    public function index() 
    { 
     $profile = Profile::find(Auth::user()->id); 
     return view('client.profil')->with($profile); 
    } 
} 

私はこのエラーを得た:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'profiles.id' in 'where clause' (SQL: select * from `profiles` where `profiles`.`id` = 1 limit 1) 

は、通常、それはそのようなことができます:プロファイルから選択する* USER_ID = 1 // 1が記録されていますuser_id

答えて

2

まず、主キーは使用していません。それは大丈夫ですが、Eloquentに伝える必要があります。 Profileモデルでは、$primaryKeynullに設定してください。

protected $primaryKey = null; 

その後、あなたはApp\Userモデルにおける関係の逆を定義する必要があります:

public function profile() 
{ 
    return $this->hasOne('App\Profile'); 
} 

そして、何あなたが本当にしたいことは、ユーザIDによって、しかし、負荷にプロファイルを照会することではありませんそれを持つユーザーはプロファイルですので、ですので見てみましょう:

$user = auth()->user()->load('profile'); 
$profile = $user->profile; 

return view('client.profil', compact('profile')); 
+0

あなたが 'あなた' Profile'モデルで ')(あなたの'パブリック関数の利用者のうち、return'していないので、それはだ@Hannik私はヌル – Hanik

+0

上メンバ関数addEagerConstraintsにこのエラー ()の呼び出しを得ました。 'ます$ this-> belongsToの( 'アプリケーション\ユーザー')を返す;' – Ohgodwhy

+0

同じエラー:Uhハァッヌル – Hanik

0

私はあなたがこれを試すべきだと思います。..

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Models\Profile as Profile; 
use App\Http\Requests; 
use Auth; 

class ClientController extends Controller 
{ 
    public function index() 
    { 
     $profile = Profile::where('user_id',Auth::user()->id)->first(); 
     return view('client.profil')->with($profile); 
    } 
} 
+0

:)あなたが答える – Hanik

+0

を共有するので、他の意志に反している、それのために狩りをする必要がありましたということです助けを得ます。ありがとうございます –

+0

この方法の短所。1コントローラーで定義された関係。移植性のないコードは、Laravelのデザインプラグマに反する。それが「機能する」という理由だけで正しいとは限りません。心に留めておきます。 – Ohgodwhy

関連する問題