2016-12-09 31 views
0

我已經使用一些指南在線來使用pluck函數從數據庫填充下拉框。這在創建中起作用,但是當查看錶格並顯示記錄時,它只顯示ID而不是它引用的表格中的查找值。我嘗試將數據返回到customers.show並更改視圖,但無法使其正常工作。表中的Laravel查找值

控制器:

public function show($id) 
    { 
     $company = Companies::find($id); 
     $customers = $this->customersRepository->findWithoutFail($id); 

     if (empty($customers)) { 
      Flash::error('Customers not found'); 

      return redirect(route('customers.index')); 
     } 

     return view('customers.show') 
     ->with('customers', $customers) 
     ->with('company', $company); 
    } 

,那麼該觀點:

<!-- Company Id Field --> 
<div class="form-group"> 
    {!! Form::label('company_id', 'Company Id:') !!} 
    <p>{!! $company->name !!}</p> 
</div> 

我也相信我在模型的正確關係設置:

public function company() 
    { 
     return $this->belongsTo(\App\Models\Company::class); 
    } 

我相信的東西是錯誤的$company = Companies::find($id)我希望它找到字段customers.company_id。如果我手動輸入公司表中記錄的ID,例如1它會正確返回數據。

在customers表中有一列company_id,它被限制爲companies表列ID。 感謝

+0

嘗試返回以下內容:'返回查看(「customers.show」,緊湊型(「客戶「',」company「));' – manniL

+0

我認爲問題出在'$ company = Companies :: find($ id);'我不想從ID字段找到公司,而是找到company_id字段。如果我手動輸入id,例如'3'它返回我想要的數據。 –

回答

0

試試這個:

return view('customers.show', compact('company', 'customers')); 

而且我真的不知道你要顯示的究竟是行不通的哪一個領域。

編輯:如果您對公司屬於關聯relationshop在您的客戶模型,你可以試試這個:

$customer->company->name 
+0

這是客戶表,公司ID引用公司表,但我想返回customers.company_id字段中的ID的companies.name。 –

+0

如果您的客戶模型中有公司的belongsTo聯繫商店,您可以試試這個:'$ customer-> company-> name' –

+0

謝謝!這工作!簡直不敢相信。如果您提交答案,我會標記它。 –

0

花費過去一天左右在黑暗中碰撞周圍後,我認爲我會d回來看看我是否無法幫助那些追隨者更清晰的路徑。

我會使用我自己的代碼,所以還有另一個例子在那裏爲那個假想的人浮出水面。

我的情況:我有一個帶有「狀態」列的Job模型,但它只是一個id。這不是很有幫助。

  • 工作

    • 狀態
  • JobStatus

    • STATUS_ID
    • 標題
    • 描述


首先是查找表
有額外信息的表格。如果你不確定,這個模型不需要做任何事情。只是存在和工作就像它應該的。

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class JobStatus extends Model 
{ 

    protected $primarykey = "status_id"; //Because my key is not Laravel-standard 
} 


二: 「父」 表
的 '附加' 和 'get__Attribute' 尚未在Laravel更加隱蔽的好東西是自動地擴大你的模型查詢。

真正讓我失望的是我認爲「belongsTo」應該在查找表中。

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Job extends Model { 

    // . . . 

    //Can be anything - but 'status' was taken 
    protected $appends = ['job_status']; 

    //Needs to be camel case of $appends 
    public function getJobStatusAttribute() { 
     return $this->status()->first(); 
    } 

    public function status() { 
     return $this->belongsTo('App\JobStatus', 'status', 'status_id'); // Again, not the Laravel-iest keys 
    } 


三:控制器
沒有與此有關,但我想給什麼事情的全貌。只是一個正常的模型調用(具有專門的功能)。

<?php 

//. . . . 

class AccountController extends Controller { 

    public function loadaccount() { 

     $job = Job::currentjob(); 

     return view('account/account', [ 
      'job' => $job, 
     ]); 

} 

最後,查看

// account.blade.php 

@section('content') 

@if($job) 
    Progress Report for "{{ $job->title }}"<br/>  
    Status: {{ $job->job_status->title }}<br/> 
    {{ $job->job_status->description }}<br/> 
</div> 
@endif 

// . . . . // 

希望這有助於。


(值得注意的是,誠實的緣故,這個答案基本上是由於這個傢伙:)
https://laracasts.com/discuss/channels/laravel/need-to-append-a-field-from-a-lookup-table-in-my-result-collection