2015-05-19 21 views
7

hasMany kullanıcılarına ve kullanıcılara belongsTo bir projem var.Laravel 5 Tanımlanmamış yönteme çağrı Veritabanı Sorgulama Builder :: method()

Bir projenin sahip olduğu toplam kullanıcı sayısını saymak istiyorum, böylece onları bağlamanız gerekiyor.

Bu şekilde Call to undefined method Illuminate\Database\Query\Builder::user() hatası alıyorum.

Neyi yanlış yapıyorum?

Kontrol:

class ProjectController extends Controller 
{ 
private $project; 

public function __construct(Project $project){ 

    $this->project = $project; 

//  $this->project = $project 
//   ->with('user'); 
} 


public function index(Project $project) 
{ 

    $projects = $project->with('user')->get(); 

    $currenttime = Carbon::now(); 

// return view('project.index', array('projects' => $projects, 'currenttime' => $currenttime)); 

    return view('user.index', compact('projects')); 
} 

}

Model user:

public function project(){ 
    return $this->belongsTo('App\Project', 'project_id','id'); 
} 

Model project:

public function users() { 
    return $this->hasMany('App\User', 'id'); 
} 

HTML/Bıçak:

@if(isset($projects)) 

    <table class="table table-striped table-hover table-dynamic datatable"> 
     <thead> 
     <tr> 
      <th>{{ trans('common.project') }}</th> 
      <th>{{ trans('common.workers') }}</th> 
      <th>{{ trans('common.completion_date') }}</th> 
      <th>{{ trans('common.status')}}</th> 
     </tr> 
     </thead> 
     <tbody> 
     @foreach($projects as $project) 
      <tr> 
       <td>{!! link_to_route('project.edit', $project->name, [$project->id])!!}</td> 
       <td>{{ $project->id }}</td> 
       <td>{{ $project->completion_date }}</td> 

       @if (($project->completed) == 1) 
        <td><span class="label label-success">{{ trans('common.completed') }}</span></td> 
       @elseif(($project->completion_date) < $currenttime) 
        <td><span class="label label-danger">{{ trans('common.toolate') }}</span></td> 
       @elseif(($project->active) == 0) 
        <td><span class="label label-default">{{ trans('common.inactive') }}</span></td> 
       @else 
        <td><span class="label label-warning">{{ trans('common.inprogress') }}</span></td> 
       @endif 

      </tr> 
     @endforeach 
     </tbody> 

    </table> 
@endif 
+0

Bu '$ project-> kullanıcılarını nasıl çağırıyorsunuz? '? – vps

+0

'public function index (Project $ project)' modelimden doğruysa? – Liam

+0

tamam, lütfen dd ($ projects-> users) 'seçeneğini deneyebilirsiniz; – vps

cevap

2

Sen relationship.I tanımlayan yöntemi adını gerektiği anlamına ben tür yüzleşiyorum

public function index(Project $project) 
{ 
$projects = $project->with('users')->get(); 
$currenttime = Carbon::now(); 
// return view('project.index', array('projects' => $projects, 'currenttime' => $currenttime)); 

return view('user.index', compact('projects')); 
} 
+0

Hatadan kurtuldum, ama dd ($ projeler) olduğunda projeleri gösterecek ama ilişkiler boş olacak. (#relations: array: 1 [▼ "users" => Koleksiyon {# 256 ▼ #items: [] } ' – Liam

+0

numaralı veritabanındaki projelere bağlı olan kullanıcılarınız olsa da, kullanıcı değil kullanıcı ile ilişkiniz çalışmayacaktır. Bu –

+1

Sadece birçoğunu çoktan buldum ilişki ve pivot tablo kullanmak zorundayım, sorun bu. – Liam

0

kullanıcıları değil kullanıcı aynı sorun ve bazı açıklamaları gördüm:

public function project(){ 
    return $this->belongsToMany('App\Project', 'project_id','id'); 
} 

Bu arada, bu çok anlam ifade ediyor.

İlgili konular