Laravel 关系 Query/Find - 尝试获取非对象的 属性
Laravel Relation Query/Find - Trying to get property of non-object
我尝试将类别关联到交易时无法修复此错误。
// 事务控制器
$transactions = DB::table('transactions')
->where('status', 'false')
->orderBy('date','asc')
->get();
foreach($transactions as $data) {
$transaction = new Transaction();
$transaction->id = $data->id;
$transaction->category = Transaction::find($data->categories_id)->category;
$transaction->description = $data->description;
}
错误发生时间:
TransactionController.php 第 80 行中的错误异常:
尝试获取 属性 的非对象
Line 80: $transaction->category = Transaction::find($data->categories_id)->category;
但是,如果我用 die 测试我的代码,结果是:
die(Transaction::find($data->categories_id)->category()->first());
{"id":1,"users_id":1,"description":"Alimenta\u00e7\u00e3o","created_at":"2016-11-15 20:31:11","updated_at":"2016-11-15 20:31:11"}
// 交易模型
class Transaction extends Model
{
public function category(){
return $this->hasOne('App\Category','id');
}
[]的
您收到该错误,因为一个或多个 $data->categories_id
与 transactions
table 上的 id
不匹配。
注:
find
模型并在与您所做的相同的行上调用函数不是一个好习惯。
Transaction::find($data->categories_id)->category;
因为,你永远不知道 id
会作为参数传递给 find()
。
最好选择 findOrFail()
.
$tran = Transaction::findOrFail($data->categories_id);
$cat = $tran->category;
每当 id
在 transactions
table 中不匹配时,findOrFail()
函数将抛出 ModelNotFoundException
。 try...catch
块可以轻松处理此异常。
我尝试将类别关联到交易时无法修复此错误。
// 事务控制器
$transactions = DB::table('transactions')
->where('status', 'false')
->orderBy('date','asc')
->get();
foreach($transactions as $data) {
$transaction = new Transaction();
$transaction->id = $data->id;
$transaction->category = Transaction::find($data->categories_id)->category;
$transaction->description = $data->description;
}
错误发生时间: TransactionController.php 第 80 行中的错误异常: 尝试获取 属性 的非对象
Line 80: $transaction->category = Transaction::find($data->categories_id)->category;
但是,如果我用 die 测试我的代码,结果是:
die(Transaction::find($data->categories_id)->category()->first());
{"id":1,"users_id":1,"description":"Alimenta\u00e7\u00e3o","created_at":"2016-11-15 20:31:11","updated_at":"2016-11-15 20:31:11"}
// 交易模型
class Transaction extends Model
{
public function category(){
return $this->hasOne('App\Category','id');
}
[]的
您收到该错误,因为一个或多个 $data->categories_id
与 transactions
table 上的 id
不匹配。
注:
find
模型并在与您所做的相同的行上调用函数不是一个好习惯。
Transaction::find($data->categories_id)->category;
因为,你永远不知道 id
会作为参数传递给 find()
。
最好选择 findOrFail()
.
$tran = Transaction::findOrFail($data->categories_id);
$cat = $tran->category;
每当 id
在 transactions
table 中不匹配时,findOrFail()
函数将抛出 ModelNotFoundException
。 try...catch
块可以轻松处理此异常。