我正在查看一些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
的用户表并检索行。然后显示在视图中的名称。
现在,如果有一个复杂的查询,您也可以在模型中为其编写一个函数。