【发布时间】:2014-04-18 21:46:40
【问题描述】:
我的两个模型在 Laravel 应用程序中的关系存在问题。我的模型是:
class Invoice extends Eloquent {
protected $table = 'invoices';
public function line_items()
{
return $this->hasMany('LineItem');
}
}
还有:
class LineItem extends Eloquent {
protected $table = 'line_items';
public function invoice()
{
return $this->belongsTo('Invoice');
}
}
在我的控制器中,我使用以下内容获取 Invoice 行:
$invoice = Invoice::find($id);
但是,如果我尝试访问 line_items 属性以获取与我的发票相关的 LineItem 行,则会收到以下错误:
为 foreach() 提供的参数无效
这是为什么?我已经按照 Laravel 的文档设置了我的模型:http://laravel.com/docs/eloquent#one-to-many
【问题讨论】:
-
foreach循环在哪里?您在表格中是否有适当的键/字段来建立关系? -
在我的控制器和视图中都试过了:
foreach ($invoice->line_items as $line_item)触发错误。 -
试试
dd($invoice->line_items)它不是一个数组而是一个标量值。 -
确保当前发票有
line_items,尝试使用不同的ID或尝试dd(Invoice::with('line_items')->get())并检查结果。 -
如果我使用
with关键字,它可以工作。如果我按照 Laravel 文档进行了设置,为什么没有?