Home  >  Article  >  Backend Development  >  laravel中数据库表得关联问题

laravel中数据库表得关联问题

WBOY
WBOYOriginal
2016-06-06 20:39:081085browse

控制器中:

<code>public getShow($id){
$post=Post::find($id)
return View::make('admin.post-detail')->with('posts',$post);
}</code>

在post模板中:

<code>public function user(){
            return $this->belongsTo('User');
}</code>

然后在post-detail.blade.php中可以这样使用:$post->user ..

<code>@foreach($posts as $post)
{{$post->user->username}}
@endforeach</code>

而posts表中并没有user字段 为什么却可以查询出来结果?

回复内容:

控制器中:

<code>public getShow($id){
$post=Post::find($id)
return View::make('admin.post-detail')->with('posts',$post);
}</code>

在post模板中:

<code>public function user(){
            return $this->belongsTo('User');
}</code>

然后在post-detail.blade.php中可以这样使用:$post->user ..

<code>@foreach($posts as $post)
{{$post->user->username}}
@endforeach</code>

而posts表中并没有user字段 为什么却可以查询出来结果?

会在post表中找user_id字段,如果您想定义一个不同的外键字段,您可以通过 belongsTo 函数的第二个参数传递它:

<code>class Phone extends Eloquent {

    public function user()
    {
        return $this->belongsTo('User', 'local_key');
    }

}
</code>

belongsTo()函数是 Laravel Eloquent 提供的模型间关系的一种,Post类由于继承了 \Eloquent 类所以也可以调用。

模型间关系具体该如何使用可以参考:深入理解 Laravel Eloquent(三)——模型间关系(关联)

请查看laravel的Eloquent ORM用法。

Defining The Inverse Of A Relation

<code>php</code><code>class Post extends Eloquent {

    public function user()
    {
       //$foreignKey默认为当前调用函数_id,即user_id,$otherKey为当前类主键id
       //select user_id from post where id=$post_id;
       //select username from user where user_id=$user_id;
        return $this->belongsTo('User', $foreignKey, $otherKey);
    }

}
</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn