空相关表在Laravel中抛出错误

时间:2014-03-31 04:08:47

标签: php laravel laravel-4

我在Laravel中创建了一个基本的一对一关系,允许用户将徽标上传到个人资料。徽标存储在自己的表中。

我还将用户配置文件播种到我的数据库中,但我没有任何徽标。

我遇到的问题是,当我调用他们的个人资料并且没有徽标时,我收到了“试图获取非对象的属性”错误。我希望插入一个可以替代的股票标识,但我没有运气。

我的代码,在show.blade.php文件中是:

<div class="thumbnail">

                @if ("{{ $contractor->logo->contractor_id }}" !== NULL)
                    <img src="../{{ $contractor->logo->name }}">
                @else 
                    <img src="../assets/images/logo.png">
                @endif
        </div>

作为参考,这是我的控制器动作:

public function logos($id)
    {

        $contractor = Contractor::find($id);
        return View::make('contractors.logos')
            ->with('contractor', $contractor);
    }

public function logo_upload($id){

  $input = Input::all();
  $rules = array(
      'file' => 'image|max:3000',
  );

  $validation = Validator::make($input, $rules);

  if ($validation->fails())
  {
    return Response::make($validation->errors->first(), 400);
  }
    $file = Input::file('file');
    $destinationPath = 'uploads/logos';
    $extension = $file->getClientOriginalExtension(); 
    $filename = str_random(12).".{$extension}";
    $upload_success = Input::file('file')->move($destinationPath, $filename);
    $path = Input::file('file')->getRealPath();

    if( $upload_success ) { 

        $logo = new Logo;
        $logo->name = $destinationPath ."/". $filename;
        $logo->contractor_id = (Input::get('contractor_id'));
        $logo->save();
       return Response::json('success', 200);
    } else {
       return Response::json('error', 400);
    }
}

当相关表没有外键存在时,是否有更好的方法来交换占位符徽标? TIA

1 个答案:

答案 0 :(得分:0)

这是我建议使用PHP的错误抑制运算符@的少数几个点之一。

@if( @$contractor->logo->contractor_id )
  <img src="../{{ $contractor->logo->name }}">
@else 
  <img src="../assets/images/logo.png">
@endif

另一个选择是首先检查$contractor->logo

@if( isset($contractor->logo) && $contractor->logo->contractor_id )

附注:Laravel中{{ }}内不需要@if