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

laravel中数据库表得关联问题

WBOY
Release: 2016-06-06 20:39:08
Original
1135 people have browsed it

控制器中:

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

在post模板中:

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

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

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

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

回复内容:

控制器中:

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

在post模板中:

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

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

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

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

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

<code>class Phone extends Eloquent {

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

}
</code>
Copy after login

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>
Copy after login
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template