ska*_*v85 6 php laravel eloquent
在Eloquent中定义反向关系时,是否必须将动态属性命名为与相关模型相同?
class Book extends Eloquent {
public function author()
{
return $this->belongsTo('Author');
}
}
$books = Book::all()
foreach ($books as $book) {
echo $book->author->firstname;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我是否必须调用此方法作者,还是可以将其命名为其他内容?我试图将其命名为其他东西(只是出于好奇),但它然后返回null,因此错误"试图获取非对象的属性".
编辑:我通过将外键传递给belongsTo来实现它,如下所示:
class Book扩展了Eloquent {
public function daauthor()
{
return $this->belongsTo('Author', 'author_id');
}
}
$book = Book::find(55);
dd($book->daauthor);
Run Code Online (Sandbox Code Playgroud)
有人可以解释原因吗?
方法belongsTo尝试确定链接到Author模型的属性。为了实现这一点,Laravel 使用调用者的函数名称。
因此,在您的代码中,Laravel 会看到daauthor函数,并尝试使用books表中的属性daauthor_id来满足您的请求。由于您的 books 表没有此属性,因此它会失败。
通过在方法上设置 $foreignKey ,您可以覆盖默认行为:
public function daauthor()
{
return $this->belongsTo('Author', 'author_id');
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看\Illuminate\Database\Eloquent\Model的源代码。
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |