2014-10-29 159 views
0

我想预填充一些表单中的字段,我是新的关系。Laravel错误,当hasOne什么都没有

我的控制器:

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) 

我该如何正确使用它?

+1

是什么'SupplierWebsite'模型看起来像什么,它的属性是什么? – Jerodev 2014-10-29 10:40:33

+0

如果没有关系,那么你有'null'。 – Amelia 2014-10-29 12:51:45

回答

1

在你看来,使用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 : ''; 
+0

谢谢,我只是想知道我是否正在使用正确的方法。没想到只是使用内联如果检查null :(。 – imperium2335 2014-10-30 07:45:04