Laravel在与$数据关联的另一个表中查找记录



我正在查看一些Laravel代码,我对代码有一些问题。在视图中,我看到了一块代码" $ data-> profile-> age"。此代码是否会在与$数据关联的配置文件表中自动找到配置文件记录?如何找到关联的配置文件?

控制器:

return view('new-design.pages.influencer.info')
                ->withData($data)

查看:

$data->profile->age

是。它使用您在个人资料模型中确定的关系

找到关联的配置文件

定义了关系后,我们可以使用雄辩的动态属性检索相关记录。动态属性允许您访问关系方法,就好像它们是模型上定义的属性一样:

这是文档中的一个简单示例,可以帮助您理解:

假设您有一个posts表和comments表:

我们需要定义这两个表之间的关系。

一对多关系用于定义单个模型拥有任何其他模型的关系。例如,博客文章可能会有无限的评论。

注意:comments表中必须有一个外键引用posts表,例如post_id,在这种情况下,如果您使用其他名称,则应在您的关系中告知:blockquote>

记住,雄辩将自动确定注释模型上的适当的外键列。按照惯例,雄辩将以拥有模型的"蛇案"名称和后缀 with _id。因此,就此示例而言,雄辩将假设评论模型上的外键是post_id

在您的 post 模型中,您可以做:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Post extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function comments()
    {
        return $this->hasMany('AppComment');
    }
}

和您的注释模型您应该定义逆关系

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Comment extends Model
{
    /**
     * Get the post that owns the comment.
     */
    public function post()
    {
        return $this->belongsTo('AppPost');
    }
}

现在,如果要访问帖子中的所有评论,您只需要获得关系:

$post = Post::find($id); // find a post
$post->comments; // This will return all comments that belong to the given post

因此,您基本上可以访问它们,就像它们是模型的财产一样,如文档中所述

中所述

在您的视野中,您可以做这样的事情:

@foreach($post->comments as $comment)
{
 {{$comment->text}} 
}
@endforeach

此示例将打印我们在控制器中收到的帖子中的每个评论文本。

我在您的模型中估计$数据有一个称为配置文件的函数。由此,它得到了等效的配置文件。

示例:想象您有一个称为电话的模型,您想找到拥有它的用户。您可以在模型中写下以下功能。

    public function user()
    {
        return $this->belongsTo('AppUser');
    }

在视图中,您可以写

之类的东西
$phone->user->name

现在,在现场,Laravel将上电话并从user_id获取该手机的值。(如果外键位于不同的列中,则也可以指定)。然后,Laravel将找到使用该user_id的用户表并检索行。然后显示在视图中的名称。

现在,如果有一个复杂的查询,您也可以在模型中为其编写一个函数。

最新更新