2013-08-06 12 views
9

Próbuję zwrócić obiekt Contract i wszystko to jest związane Project. Mogę wrócić wszystkich Contract s, ale gdy próbuję dostać Kontrakt na Project, dostaję „class«EstimateProject»nie znaleziono” błąd. Uruchomiłem composer dump-autoload, aby ponownie wczytać odwzorowania klas, ale nadal dostaję błąd. Jakieś pomysły? Oto moja klasa setup:klasa laravel Nie znaleziono z jeden-do-wielu

EDIT: Chciałem tylko dodać, że LaravelBook\Ardent\Ardent\ jest przedłużeniem laravel za model.php. Dodaje ona walidację do modelu w funkcji Save. Rozszerzyłem rozszerzenie kolejnej wtyczki, którą dodałem, która jest wersją MongoDB Eloquent ORM.

EstimateContract.php

<?php namespace Test\Tools; 

    use LaravelBook\Ardent\Ardent; 

    class EstimateContract extends Ardent { 

    // This sets the value on the Mongodb plugin's '$collection' 
    protected $collection = 'Contracts'; 

    public function projects() 
    { 
     return $this->hasMany('EstimateProject', 'contractId'); 
    } 
    } 

EstimateProject.php

<?php namespace Test\Tools; 

    use LaravelBook\Ardent\Ardent; 

    class EstimateProject extends Ardent { 

    // This sets the value on the Mongodb plugin's '$collection' 
    protected $collection = 'Projects'; 

    public function contract() 
    { 
     return $this->belongsTo('EstimateContract', 'contractId'); 
    } 
} 

EstimateContractController.php

<?php 

    use \Test\Tools\EstimateContract; 

    class EstimateContractsController extends \BaseController { 

/** 
* Display a listing of the resource. 
* 
* @return Response 
*/ 
    public function index() 
    { 
     $contracts = EstimateContract::all(); 

     echo $contracts; 

     foreach($contracts as $contract) 
     { 
      if($contract->projects) 
      { 
       echo $contract->projects; 
      } 
     } 
    } 
} 
+2

spróbuj umieścić 'use \ Test \ Tools \ EstimateProject;' w 'EstimateContractController.php' –

+0

@TryingTobemyself Niestety, już próbowałem, że bezskutecznie. – Thelonias

+1

spróbuj umieścić 'Użyj \ test \ Tools \ EstimateProject;' w 'EstimateContract.php' –

Odpowiedz

24

Aby to zadziałało, potrzebowałem w pełni zakwalifikować ciąg EstimateProject w moim modelu EstimateContract.

Rozwiązaniem było zmienić z:

return $this->hasMany('EstimateProject', 'contractId'); 

do

return $this->hasMany('\Test\Tools\EstimateProject', 'contractId'); 
2

Musisz użyć pełnej nazwy, ale mam ten sam błąd, kiedy używane są ukośniki zamiast tyłu ukośniki:

//Correct 
return $this->hasMany('Fully\Qualified\ClassName'); 
//Incorrect 
return $this->hasMany('Fully/Qualified/ClassName'); 
Powiązane problemy