2017-02-25 46 views
0

我有2个表格(项目和客户端)。客户可以有许多项目。一个项目属于一个客户。使用口才从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>