我正在查看一些laravel代码,并且对代码有一些疑问。在视图中,我看到了一段代码“ $ data-> profile-> age”。此代码是否自动在与$ data关联的配置文件表中找到配置文件记录?如何找到关联的配置文件?
控制器:
return view('new-design.pages.influencer.info')
->withData($data)
查看:
$data->profile->age
答案 0 :(得分:1)
我认为在您的$ data模型中有一个名为profile的函数。由此,它获得了等效的配置文件。
示例:假设您有一个名为phone的模型,并且想找到拥有它的用户。您可以在模型中编写以下函数。
public function user()
{
return $this->belongsTo('App\User');
}
在视图中,您可能会写类似
$phone->user->name
现在,在后台,laravel将转到电话并从user_id
获取该电话的值。 (如果外键位于不同的列中,您也可以指定它)。然后,laravel将找到带有该user_id
的users表并检索该行。然后在视图上显示名称。
现在,如果存在复杂的查询,您还可以在模型中为此编写函数。
答案 1 :(得分:1)
是的。它将使用您在个人档案模型中定义的关系找到关联的个人档案
一旦定义了关系,我们可以使用Eloquent的动态属性来检索相关记录。动态属性使您可以访问关系方法,就像它们是模型中定义的属性一样:
这是documentation中的一个简单示例,可帮助您理解:
假设您有一个posts
表和一个comments
表:
我们需要定义这两个表之间的关系。
一对多关系用于定义单个模型拥有任意数量其他模型的关系。例如,博客帖子可能有无限数量的评论。
注意:在这种情况下,如果您使用的是comments
表,则您的posts
表中必须有一个引用post_id
表的外键,例如with _id
。您应该在您的关系中告知其他名称:
请记住,Eloquent将自动确定评论模型上的正确外键列。按照惯例,Eloquent将采用拥有模型的“ snake case”名称,并在其后缀
post_id
。因此,对于这个示例,Eloquent将假定Comment模型上的外键是<?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { /** * Get the comments for the blog post. */ public function comments() { return $this->hasMany('App\Comment'); } }
。
在您的发布模型中,您可以执行以下操作:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* Get the post that owns the comment.
*/
public function post()
{
return $this->belongsTo('App\Post');
}
}
在注释模型中,您应该定义反比关系
$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
因此,您基本上就像文档中所述的那样访问它们,就好像它们是模型的属性一样
您认为您可以执行以下操作:
s = "the quick brown fox"
' '.join(s.split()) == "the quick brown fox" # returns True
此示例将打印出我们在控制器中获得的帖子中的每个注释文本。