所以我在Laravel应用程序中更改了一个列的名称,并开始派对.
更改是从name_id到seller_id
在查看之前:
$transaction->user->first_name
Run Code Online (Sandbox Code Playgroud)
之前在控制器交易中:
class Transaction extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器调用视图之前和之后:
public function getInfoUser($name){
$user = User::where('register_id', $name)->where('id', auth()->user()->id)->first();
if($user){
return view('users.user', compact('user'));
}
}
Run Code Online (Sandbox Code Playgroud)
在视野中:
$transaction->seller->first_name
Run Code Online (Sandbox Code Playgroud)
在控制器事务之后:
class Transaction extends Model
{
protected $primaryKey = 'seller_id';
public function user(){
return $this->belongsTo('App\User');
}
}
Run Code Online (Sandbox Code Playgroud)
退货后:
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)
Run Code Online (Sandbox Code Playgroud)
作为参考,表用户具有标准列名"user_id"和"first_name",并且表事务(事务控制器)现在具有"seller_id"
不确定它是否会影响,但在SQL表中,主键在两种情况下都是"id"自动增量
我做错了什么?
user您的模型中有一种关系Transaction,但您试图按照您的观点访问它seller。
改变:
$transaction->seller->first_name
Run Code Online (Sandbox Code Playgroud)
到:
$transaction->user->first_name
Run Code Online (Sandbox Code Playgroud)
或者
您还可以将模型中的关系更改为seller. 如果那是你需要的。
最后:
仅当关系中有记录时才在视图中显示数据。
@if(!empty($transaction->user))
$transaction->user->first_name
@else
//No users
@endif
Run Code Online (Sandbox Code Playgroud)