laravel 关联模型
官方文档5.5:https://laravelacademy.org/post/8203.html
一对一 hasone (用户-手机号)
一对多 hasmany(文章-评论)
一对多反向 belongsto (评论-文章)
多对多 belongstomany (用户-角色)
远层一对多 hasmanythrough (国家-作者-文章)
多态关联 morphmany (文章、视频-评论)
多态多对对 morphtomany (文章、视频-标签)
//post模型 文章表的模型层 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $guarded = []; //关联user(用户)模型 public function user() { return $this->belongsTo('App\User');//如果按照laravel中规定的定义的,后面两个参数可以忽略, //return $this->belongsTo('App\User','user_id','id');//user_id为外键 } //在文章的模型层中写的,用户和文章是一对多,所以文章和用户是一对多反向,使用 belongsto } //关联comment模型 public function comments() { return $this->hasmany('App\comment')->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('App\User'); } //可以在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>