laravel笔记8 产品管理模块 关联模型

关联模型主要关系

一对一

一对多

多对一(反向)

多对多

1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。

身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 
2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

 

二、  主键、外键和索引的区别 

主键、外键和索引的区别?

 

主键

外键

索引

定义:

唯一标识一条记录,不能有重复的,不允许为空

表的外键是另一表的主键, 外键可以有重复的, 可以是空值

该字段没有重复值,但可以有一个空值

作用:

用来保证数据完整性

用来和其他表建立联系用的

是提高查询排序的速度

个数:

主键只能有一个

一个表可以有多个外键

一个表可以有多个惟一索引

 

问题:在产品列表里面显示分类的名称,而不是id

ID标题所属分类浏览次数发布时间操作
3 阮阮阮阮阮 1 44 2020-08-10 08:46:00  

打开产品模型Product.php

class Product extends Model
{
public function category(){

//产品和分类是反向多对一的关系 产品属于分类 参数1是分类的模型 cid是外键 还可以有第三个参数 主键
return $this->belongsTo('App\Category','cid');
}
}
这样产品模型和分类模型就关联上了,可以去ProductController控制器验证一下
public function index()
{
$list = Product::orderby('created_at','Desc')->OrderBy('id','Desc')->paginate(10);

// foreach ($list as $item){
//这里会调用数据模型product.php里面的category方法,->name打印分类
// dump($item->category->name);
// }die;
return view('admin.product.index')->with('list',$list);
}
然后在blade模板里面
 <tr>
<th class="text-center" style='width:60px;'> ID</th>
<th class="text-center">标题</th>
<th class="text-center" style='width:120px'>所属分类</th>
<th class="text-center" style='width:120px'>浏览次数</th>
<th class="text-center" style='width:150px'>发布时间</th>
<th class="text-center" style="width: 150px;">操作</th>
</tr>
</thead>
<tbody>
@foreach ($list as $item)

<tr>
<td class="text-center">{{$item->id}}</td>
<td class=>{{$item->title}}</td>
<td class="text-center">{{$item->category->name}}</td>
<td class="text-center">{{$item->views}}</td>
<td class="text-center">{{$item->created_at}}</td>
最后效果
ID标题所属分类浏览次数发布时间操作
3 阮阮阮阮阮 php基础 44 2020-08-10 08:46:00  
 
 
posted @ 2020-08-10 17:41  孤单照夜清  阅读(245)  评论(0编辑  收藏  举报