zoukankan      html  css  js  c++  java
  • laravel 关联模型

    官方文档5.5:https://laravelacademy.org/post/8203.html

    一对一   hasone  (用户-手机号)

    一对多   hasmany(文章-评论)

    一对多反向 belongsto (评论-文章)

    多对多  belongstomany (用户-角色)

    远层一对多  hasmanythrough  (国家-作者-文章)

    多态关联  morphmany  (文章、视频-评论)

    多态多对对  morphtomany  (文章、视频-标签)

    //post模型  文章表的模型层
    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class Post extends Model
    {
        protected $guarded = [];
    
        //关联user(用户)模型
        public function user()
        {
            return $this->belongsTo('AppUser');//如果按照laravel中规定的定义的,后面两个参数可以忽略,
         //return $this->belongsTo('AppUser','user_id','id');//user_id为外键
    } //在文章的模型层中写的,用户和文章是一对多,所以文章和用户是一对多反向,使用   belongsto }
    
    
    //关联comment模型
        public function comments()
        {
            return $this->hasmany('Appcomment')->orderBy('created_at','desc');
        }
    //controller
    //添加评论
    public function comment(Post $post)
        {
            $this->validate(request(),[
                'content'=>'required|min:3'
            ]);
            $comment = new Comment();
            $comment->user_id = Auth::id();
            $comment->content = request('content');
            $comment->post_id = $post->id;
            $post->comments()->save($comment);//也可以使用以前的添加
            return back();//返回上一个页面
        }
    //评论的模型层需要关联user
    public function user()
    {
         return $this->belongsTo('AppUser');
    }
    //可以在controller中进行预加载 $post->load('comments');  其余不变,知识view不用进行加载了
    //view
    <ul class="list-group">                     
        @foreach($post->comments as $comment)   
        <li class="list-group-item">            
            <h5>{{$comment->created_at}} by {{$comment->user->name//注意user不能加()
            <div>                               
                {{$comment->content}}           
            </div>                              
        </li>                                   
        @endforeach                             
    </ul>                                       
  • 相关阅读:
    [arm]虚拟机,2440开发板,主机三者互通
    Linux下的lds链接脚本简介(四)
    Linux下的lds链接脚本简介(三)
    Linux下的lds链接脚本简介(二)
    Linux下的lds链接脚本简介(一)
    程序员面试资源大收集
    Source Insight 3.50.0065使用详解
    DNW烧写FL2440 NAND Flash分区
    php isset()与empty()的使用
    JSON.parse()和JSON.stringify()的区别
  • 原文地址:https://www.cnblogs.com/hanmengya/p/10906756.html
Copyright © 2011-2022 走看看