2017-06-09 21 views
0

私のデータベースには2つのテーブルがあります。Users and Complains外部キーでデータを取得

ユーザーテーブル:

id |名前|パスワード

苦情の表

id | user_id |タイトル|本文

user_idは外部キーです。 user_idに基づいてクレームテーブルからタイトルと本文を取得するにはどうすればよいですか?

この

は、私がこれまで持っているものですが、私はuser_idを

私のユーザーモデルに特定のデータを取得できません。

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'surname', 'regnumber', 'course', 'department', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

マイプロフィールコントローラー:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\User; 
use App\Complain; 
use App\Feedback; 
use App\Item; 
use Illuminate\Support\Facades\Redirect; 
use Session; 
use Auth; 

class ProfileController extends Controller 
{ 
    public function profile($user_id){ 

     $user = User::whereId($user_id)->first(); 

     $complains = Complain::paginate(2); 

     return view('user.profile', compact('user', 'complains')); 
    } 

} 

マイビュー:

@foreach($complains as $complain) 
    <div> 
     <h3 class="operator-complain-title">Title: </h3> 
     <p>{{ $complain->title }}</p> 
     <h3 class="operator-complain-title">Complain:</h3> 
     <p>{{ $complain->body }}</p> 
    </div> 
    <hr> 
@endforeach 

誰でもアイデアを共有してください。

答えて

0

ここで概説としてあなたが1対多の関係セットアップすることをお勧めします:https://laravel.com/docs/5.4/eloquent-relationships#one-to-many

あなたが代わりに正しい方法を持っていたら、あなたは$user->complainsような何かをするとき、雄弁は関係があります。

class User extends Model 
{ 
    /** 
    * Get the complains for the User. 
    */ 
    public function complains() 
    { 
     return $this->hasMany('App\Complain'); 
    } 
} 

class Complain extends Model 
{ 
    /** 
    * Get the User for the Complain. 
    */ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 
+0

マイユーザモデルはn otモデルを拡張すると、Authenticatableを拡張します。関係を追加すればロジックは機能するのだろうか? – Martin

+0

イルミネーション\ Foundation \ Auth \ Userモデルを拡張します。それはあなたのために働くでしょう。 – btl

+0

私は不満とユーザーモデルの関係をそれぞれ作成しました。私のコントローラには、次のものがあります。$ complain = Complain :: find($ id); ビューを戻す( 'user.profile') - > withComplain($ complain);私の見解では、私はこのエラーが発生します:foreach()の引数が無効です – Martin

0

これは私のユーザーテーブルの移行です:

<?php 

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateUsersTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email')->unique(); 
      $table->string('password'); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('users'); 
    } 
} 

これは私のテーブルの移行を文句です:

<?php 

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateComplainsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('complains', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('title'); 
      $table->text('body'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('complains'); 
    } 
} 

これは私がテーブルに文句を言いに外部キーを追加するために使用移行です:

<?php 

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class AddForeignKeyToComplains extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('complains', function (Blueprint $table) { 
      $table->integer('user_id')->after('id')->nullable(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::table('complains', function (Blueprint $table) { 
      $table->dropColumn('user_id'); 
     }); 
    } 
} 
+0

ユーザーに不平を言うと、外部キーの関係が失われています。 user_idを符号なしにして、その下に追加します。$ foreign - >( 'user_id') - > references( 'id') - >( 'users'); – btl

+0

これを追加しますか?$ foreign - >( 'user_id') - >参照( 'id') - >( 'users');私の移行ファイルには? – Martin

+0

これは以下の行にあります。$ table-> integer( 'user_id') - > after( 'id') - > nullable(); – btl

関連する問題