2017-02-25 16 views
0

私は2つのテーブル(プロジェクトとクライアント)を持っています。クライアントは多くのプロジェクトを持つことができます。プロジェクトは1つのクライアントに属します。雄弁を使って2つのテーブルからクエリを取得する

テーブルスキーマ: クライアント:

Schema::create('clients', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email')->unique(); 
      $table->string('contact_person'); 
      $table->timestamps(); 
     }); 

プロジェクト:ここ

Schema::create('projects', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->text('description'); 
      $table->date('due'); 
      $table->integer('client_id')->unsigned(); 
      $table->foreign('client_id')->references('id')->on('clients'); 
      $table->timestamps(); 
     }); 

はモデルです: クライアントモデル:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Client extends Model 
{ 
    public function projects() 
    { 
    return $this->hasMany('App\Project'); 
    } 
} 

プロジェクトモデル:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Project extends Model 
{ 
    public function tasks() 
    { 
     return $this->hasMany('App\Task'); 

    } 

    public function client() 
    { 
     return $this->belongsTo('App\Client'); 
    } 
} 

ここにコントローラがあります。 ClientsController

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class ClientsController extends Controller 
{ 
    public function index() 
    { 
     $clients = Client::has('projects')->get(); 
     return $this->hasMany('projects'); 
    } 
} 

ProjectsController

<?php 

namespace App\Http\Controllers; 

use App\Project; 
use App\Client; 
use Illuminate\Http\Request; 


class ProjectsController extends Controller 
{ 
    public function index() 
    { 
     $projects = Project::find(1)->projects; 
     return $projects->all(); 
    } 

    public function store(Request $request) 
    { 
     return $request->all(); 
    } 
} 

Project.vue

<ul> 
    <li v-for="project in projects"> 
     {{ project.name }} 
     // client's name here 
    </li> 
    </ul> 

私はそれに応じて、すべての顧客の名前とそのプロジェクトの名前が表示されますクエリを返すようにしたいです。私が今取得できるのは、プロジェクト名だけです。ありがとうございました。

答えて

0

私の質問を投稿した直後、私は解決策を見つけました。ここに行く。

ProjectsController

<?php 

namespace App\Http\Controllers; 

use App\Project; 
use App\Client; 
use Illuminate\Http\Request; 


class ProjectsController extends Controller 
{ 
    public function index() 
    { 
     $projects = Project::with('client')->get(); 
     return $projects->all(); 
    } 

    public function store(Request $request) 
    { 
     return $request->all(); 
    } 
} 

とProject.vue

<ul> 
    <li v-for="project in projects"> 
     {{ project.name }} || {{project.client.contact_person }} 
    </li> 
    </ul> 
関連する問題