相关疑难解决方法(0)

使用Eloquent查找或创建

我最近开始与工作Laravel口才,和不知道的是,缺乏一个查找或创建模型选项.你总是可以写,例如:

$user = User::find($id);
if (!$user) {
    $user = new User;
}
Run Code Online (Sandbox Code Playgroud)

但是,有没有更好的方法来查找或创建?看来在这个例子中微不足道,但对于更复杂的情况下,这将是非常有益要么让现有的记录并更新或创建一个新的.

php laravel eloquent laravel-4

27
推荐指数
5
解决办法
6万
查看次数

具有雄辩关系的空对象模式

通常情况下,某个雄辩模型的关系未设置(即在书籍表中,author_id为空),因此调用类似$ model-> relation的东西会返回null.

例如,说Book模型有一个我可能想做的author()(hasOne)关系

$author = Book::find(1)->author->name;
Run Code Online (Sandbox Code Playgroud)

如果第1册没有设置作者,它将抛出"试图获取非对象属性"错误.有没有办法避免这种情况并默认为空白,Author所以name无论是否为特定模型设置了关系,我总能调用它?

基本上我想在调用其他方法/属性之前避免条件检查是否$book->author是实际的Author.如果未设置关系,它应默认为新的Author实例.


我尝试过类似的东西:

public function getAuthorAttribute($author)
{
    return $author ?: new Author;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用; $author即使在模型上设置,也会传入null.大概是因为它是一种关系,而不是一本书的直接属性.我需要类似的东西

public function getAuthorAttribute()
{
    return $this->author()->first() ?: new Author;
}
Run Code Online (Sandbox Code Playgroud)

这似乎非常优雅,似乎它会覆盖任何急切的负载,导致性能不佳.

php laravel eloquent laravel-5

5
推荐指数
2
解决办法
2051
查看次数

标签 统计

eloquent ×2

laravel ×2

php ×2

laravel-4 ×1

laravel-5 ×1