当我尝试将类别关联到事务时,我无法修复此错误。
// TransactionController
$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行中的ErrorException: 试图获得非对象的属性
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');
}
[]的
答案 0 :(得分:0)
由于一个或多个$data->categories_id
与id
表格上的transactions
不匹配,您收到该错误。
注意:强>
find
一个模型并在一个函数上调用函数并不是一个好习惯。
Transaction::find($data->categories_id)->category;
因为,您永远不知道将id
作为find()
的参数传递给什么。
最好选择findOrFail()
。
$tran = Transaction::findOrFail($data->categories_id);
$cat = $tran->category;
只要findOrFail()
表中ModelNotFoundException
不匹配,id
函数就会抛出transactions
。 try...catch
阻止可以轻松处理此异常。