簡體   English   中英

hasOne一無所有時的Laravel錯誤

[英]Laravel error when hasOne has nothing

我正在嘗試以表單的形式預先填充一些字段,而我對關系還是陌生的。

我的控制器:

public function index($supplierId) {
    $Supplier = new Supplier;
    $supplierData = Supplier::find($supplierId);
    $supplierData->countryId = ($supplierData->countryId == 0 ? 258 : $supplierData->countryId);
    $supplierData->writtenLanguageId = ($supplierData->writtenLanguageId == 0 ? 1 : $supplierData->writtenLanguageId);
    $supplierData->paymentTermsId = ($supplierData->paymentTermsId == 0 ? 5 : $supplierData->paymentTermsId);
    $countries = Countries::lists('country', 'id');
    $languages = Languages::lists('language', 'id');
    $paymentTerms = PaymentTerms::lists('term', 'id');
    $leadTimes = Leadtimes::lists('leadtime', 'id');
    return View::make('supplier.supplier', array(
                'supplierData' => $supplierData,
                'countries' => $countries,
                'languages' => $languages,
                'paymentsTerms' => $paymentTerms,
                'leadtimes' => $leadTimes
    ));
}

我的模特:

class Supplier extends Eloquent {
    protected $table = 'suppliers';

    public function email() {
        return $this->hasOne('SupplierEmail', 'supplierId');
    }

    public function creditLimits() {
        return $this->hasOne('SupplierCreditLimits', 'supplierId');
    }

    public function website() {
        return $this->hasOne('SupplierWebsite', 'supplierId');
    }
}

問題:

<div class='col-xs-12 col-md-6'>{{Form::text('website', $supplierData->website->website, array('class' => 'form-control input-sm'))}}</div>

當沒有行(沒有記錄)時,我得到:

Trying to get property of non-object (View: C:\wamp\vhosts\view\laravel\app\views\supplier\supplier.blade.php)

我該如何使其正常工作?

在您看來,請使用isset首先檢查該值:

<div class='col-xs-12 col-md-6'>
    {{Form::text('website', 
      isset($supplierData->website->website) ? $supplierData->website->website : '', 
      array('class' => 'form-control input-sm'))
    }}
</div>

或者,更好的是,在控制器中處理此邏輯並將結果傳遞給視圖:

$supplierData->URL = isset($supplierData->website->website) ? $supplierData->website->website : '';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM