2017-08-23 10 views
0

Customers、Vouchers、およびBillsテーブルからデータを取得し、ビューに表示しようとしています。お客様は、請求書およびバウチャーとhasMany関係を持っています。ここではモデルのための私のコードは次のとおりです。Laravelリレーションシップを使用してビューからデータベースにデータを表示

お客様:

public function Bills(){ 
    return $this->hasMany('App\Bill', 'customer', 'id'); 
} 

public function Vouchers(){ 
    return $this->hasMany('App\Voucher', 'customer_name', 'id'); 
} 

ここバウチャーモデルのための私のコードです:ここでは

public function Customer(){ 
    return $this->belongsTo('App\Customers', 'id', 'customer_name'); 
} 

は手形モデルのコードは次のとおりです。

public function Customer(){ 
    return $this->belongsTo('App\Customers', 'id', 'customer'); 
} 

ここに私がこの目的のために作ったコントローラー機能です:

public function client_search(Request $request){ 
    $date_from = $request['from-date-city']; 
    $date_to = $request['to-date-city']; 
    $client = $request['client']; 

    $results = Customers::with('Bills', 'Vouchers') 
     ->where('id', $client)->get(); 
    return view('pages.prints.ledger-report-clientwise')->with('results', $results); 
} 

そして、ここで私はビューで表示しようとしている方法です。ここで

@foreach($results as $result) 
        <tr> 
         <td>{{$result->Vouchers->date}}</td> 
         <td>{{$results->Vouchers->narration}}</td> 
         <td>{{$result->Vouchers->amount}}</td> 
         <td>{{$result->Bill->total_amount}}</td> 
         <td>{{$result->balance}}</td> 

        </tr> 

         @endforeach 

は私が取得していますエラーです:

(2/2) ErrorException 
Property [date] does not exist on this collection instance. (View: D:\Code\PHP\Code\CrownBillingSystem\resources\views\pages\prints\ledger-report-clientwise.blade.php) 
in Collection.php (line 1661) 
at CompilerEngine->handleViewException(object(Exception), 1) 
in PhpEngine.php (line 44) 
at PhpEngine->evaluatePath('D:\\Code\\PHP\\Code\\CrownBillingSystem\\storage\\framework\\views/f61b2b4b91bb544a7ee3c5532f7b257b0da1b8fb.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'results' => object(Collection))) 
in CompilerEngine.php (line 59) 
at CompilerEngine->get('D:\\Code\\PHP\\Code\\CrownBillingSystem\\resources\\views/pages/prints/ledger-report-clientwise.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'results' => object(Collection))) 
in View.php (line 137) 
at View->getContents() 
in View.php (line 120) 
at View->renderContents() 
in View.php (line 85) 
at View->render() 
in Response.php (line 38) 
at Response->setContent(object(View)) 
in Response.php (line 201) 
at Response->__construct(object(View)) 
in Router.php (line 617) 
at Router->prepareResponse(object(Request), object(View)) 
in Router.php (line 574) 
at Router->Illuminate\Routing\{closure}(object(Request)) 
in Pipeline.php (line 30) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in SubstituteBindings.php (line 41) 
at SubstituteBindings->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in VerifyCsrfToken.php (line 65) 
at VerifyCsrfToken->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in ShareErrorsFromSession.php (line 49) 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in StartSession.php (line 64) 
at StartSession->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in AddQueuedCookiesToResponse.php (line 37) 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in EncryptCookies.php (line 59) 
at EncryptCookies->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in Pipeline.php (line 102) 
at Pipeline->then(object(Closure)) 
in Router.php (line 576) 
at Router->runRouteWithinStack(object(Route), object(Request)) 
in Router.php (line 535) 
at Router->dispatchToRoute(object(Request)) 
in Router.php (line 513) 
at Router->dispatch(object(Request)) 
in Kernel.php (line 176) 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
in Pipeline.php (line 30) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in TransformsRequest.php (line 30) 
at TransformsRequest->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in TransformsRequest.php (line 30) 
at TransformsRequest->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in ValidatePostSize.php (line 27) 
at ValidatePostSize->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in CheckForMaintenanceMode.php (line 46) 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
in Pipeline.php (line 148) 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
in Pipeline.php (line 53) 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
in Pipeline.php (line 102) 
at Pipeline->then(object(Closure)) 
in Kernel.php (line 151) 
at Kernel->sendRequestThroughRouter(object(Request)) 
in Kernel.php (line 116) 
at Kernel->handle(object(Request)) 
in index.php (line 53) 
at require_once('D:\\Code\\PHP\\Code\\CrownBillingSystem\\public\\index.php') 
in server.php (line 21) 

答えて

1

さて、ここで問題です。 VouchershasManyの関係であり、$result->Vouchersで呼び出されるとCollectionオブジェクトを返します。つまり、基本的には配列であり、単一のオブジェクトではありません。あなたが$result->Vouchers->dateにアクセスしたい場合は、あなたがVouchersのそれぞれの上にループを持ち、それらを一つずつエコー、または最初のものを使用します:

@foreach($results as $result) 
    @foreach($result->Vouchers AS $voucher) 
    <span>The date is {{ $voucher->date }}</span> 
    @endforeach 
@endforeach 

次の問題は、あなたが<td>{{ $results->Vouchers->narration }}</td>を持っているということですこれは以前と同じ問題です。 $resultまたはVoucherオブジェクトではなく、Collectionのプロパティにアクセスしようとしています。 (これはしかしタイプミスになりそうだ)

は、あなたが正しい考えを持っている、しかし、あなたはあなたがObjectにアクセスしているとき、対Collectionにアクセスしている際に知っておく必要がありますので、Laravelのコレクションhttps://laravel.com/docs/5.4/collections上に読み、 Eloquent https://laravel.com/docs/5.4/eloquent

+0

ありがとうございました!出来た。どうやら、私が取っていたアプローチはbelongsTo関係で働いていたし、私はそれが別のやり方になると思った。 –

関連する問題