Laravel关系更改表列会产生未定义的属性

时间:2018-01-31 10:21:49

标签: php mysql laravel

所以我在Laravel应用程序中更改了一个列的名称,并开始派对......

更改是从name_id到seller_id

在视野之前:

$transaction->user->first_name

在控制器交易之前:

class Transaction extends Model
{
    public function user(){
        return $this->belongsTo('App\User');
    }
 }

在控制器调用视图之前和之后:

public function getInfoUser($name){

   $user = User::where('register_id', $name)->where('id', auth()->user()->id)->first();

   if($user){
   return view('users.user', compact('user'));
   }
}

在视野中:

$transaction->seller->first_name

在控制器事务中:

class Transaction extends Model
{
    protected $primaryKey = 'seller_id';

    public function user(){
        return $this->belongsTo('App\User');
    }
}

退货后:

Trying to get property of non-object (View: /Users/tronne/Documents/web/resources/views/users/user.blade.php) in c7128907204dffe6676c7d88cbbc47.php (line 108) 
at CompilerEngine->handleViewException(object(ErrorException), 0) in
PhpEngine.php (line 45)
at PhpEngine-evaluatePath('/Users/tronne/Documents/web/storage/framework/views/c7128907204dffe6676c7d88cbbc47.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'user' => object(User)))
in CompilerEngine.php (line 59)
at CompilerEngine-get('/Users/tronne/Documents/web/resources/views/users/user.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'user' => object(User)))
in View.php (line 137)

作为参考,表用户具有标准列名" user_id"和" first_name"并且表事务(事务控制器)现在具有" seller_id"

不确定它是否会影响,但在SQL表中,主键在两种情况下都是" id"自动增量

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的user模型中存在Transaction关系,但您尝试在视图中以seller的形式访问它。

更改:

$transaction->seller->first_name

$transaction->user->first_name

您还可以将模型中的关系更改为seller。如果那就是你需要的。

<强>最后:

仅当关系中有记录时才在视图中显示数据。

@if(!empty($transaction->user))
        $transaction->user->first_name
@else
        //No users
@endif