2015-05-19 6 views
7

मेरे पास ऐसी परियोजनाएं हैं जो hasMany उपयोगकर्ता हैं, और उपयोगकर्ता belongsTo एक प्रोजेक्ट।लार्वेल 5 अपरिभाषित विधि पर कॉल करें डेटाबेस क्वेरी बिल्डर :: विधि()

मैं एक परियोजना के उपयोगकर्ताओं की कुल राशि गिनना चाहता हूं इसलिए मुझे उन्हें लिंक करने की आवश्यकता है।

इस तरह से मुझे Call to undefined method Illuminate\Database\Query\Builder::user() त्रुटि मिल रही है।

मैं क्या गलत कर रहा हूं?

नियंत्रक:

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')); 
} 

}

मॉडल user:

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

मॉडल project:

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

HTML/ब्लेड:

@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

आप इस '$ project-> उपयोगकर्ताओं को कैसे कॉल कर रहे हैं;'? – vps

+0

'मेरे मॉडल से सार्वजनिक फ़ंक्शन इंडेक्स (प्रोजेक्ट $ प्रोजेक्ट) ', अगर मैं सही हूं? – Liam

+0

ठीक है आप कृपया 'डीडी ($ परियोजना-> उपयोगकर्ता)' का प्रयास कर सकते हैं; – vps

उत्तर

2

आप विधि नाम है कि रिश्ते को परिभाषित करता है प्रदान करने के लिए है कि उपयोगकर्ता उपयोगकर्ता नहीं

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

मुझे त्रुटि से छुटकारा मिला, लेकिन जब मैं डीडी ($ परियोजनाएं) करता हूं तो यह परियोजनाएं दिखाएगा लेकिन संबंध खाली हैं '(#relations: array: 1 [▼ " उपयोगकर्ता "=> संग्रह {# 256 ▼ #items: [] } 'जबकि वे डेटाबेस – Liam

+0

में प्रोजेक्ट से जुड़े उपयोगकर्ता हैं, तो आपका संबंध काम नहीं करेगा क्योंकि आप उपयोगकर्ता का उपयोग नहीं कर रहे हैं। यह –

+1

बस इसे कई लोगों के लिए मिला संबंध और मुझे एक पिवट टेबल का उपयोग करना है, यही समस्या है। – Liam

0

मैं की तरह का सामना करना पड़ रहा है एक ही समस्या और की तरह कुछ स्पष्टीकरण देखा:

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

जो वैसे भी बहुत समझ में आता है।

संबंधित मुद्दे