Laravel Vuejs 实战:开发知乎 (9)定义话题与问题关系
1.话题【Topic】
执行命令:
1 php artisan make:model Topic –cmr
修改****_**_**_create_topics_table.php数据库迁移文件如下:
1 class CreateTopicsTable extends Migration
2 {
3 /**
4 * Run the migrations.
5 *
6 * @return void
7 */
8 public function up()
9 {
10 Schema::create('topics', function (Blueprint $table) {
11 $table->bigIncrements('id');
12 $table->string('name');
13 $table->text('content')->nullable();
14 $table->integer('questions_count')->default(0);
15 $table->integer('followers_count')->default(0);
16 $table->timestamps();
17 });
18 }
19
20 /**
21 * Reverse the migrations.
22 *
23 * @return void
24 */
25 public function down()
26 {
27 Schema::dropIfExists('topics');
28 }
29 }
30
修改Topic.php文件如下:
1 class Topic extends Model
2 {
3 //
4 protected $fillable = ['name', 'questions_count'];
5
6 }
7
2.处理话题与问题之间的关联关系【多对多】
单独建一个数据库迁移文件存储话题与问题之间的关系;
创建这个数据库迁移文件,执行命令:
1 php artisan make:migration create_questions_topics_table --create=questions_topics
修改 ****_create_questions_topics_table.php数据库迁移文件:
1 class CreateQuestionsTopicsTable extends Migration
2 {
3 /**
4 * Run the migrations.
5 *
6 * @return void
7 */
8 public function up()
9 {
10 Schema::create('questions_topics', function (Blueprint $table) {
11 $table->bigIncrements('id');
12 $table->bigInteger('question_id')->unsigned()->index();
13 $table->bigInteger('topic_id')->unsigned()->index();
14 $table->timestamps();
15 });
16 }
17
18 /**
19 * Reverse the migrations.
20 *
21 * @return void
22 */
23 public function down()
24 {
25 Schema::dropIfExists('questions_topics');
26 }
27 }
28
执行命令建数据表:
1 php artisan migrate
3.定义模型Model之间的关联关系:
具体原理及更多介绍看官方文档:模型关联
也有英文版的样例介绍:
larashout网站的:
Laravel One to One Eloquent Relationship Tutorial
Laravel One to Many Eloquent Relationship Tutorial
Laravel Many to Many Eloquent Relationship Tutorial
Laravel Has Many Through Eloquent Relationship Tutorial
修改Topic.php文件:
1 class Topic extends Model
2 {
3 //
4 protected $fillable = ['name', 'questions_count'];
5
6
7 public function questions()
8 {
9 return $this->belongsToMany(
10 Question::class,
11 'questions_topics' //表名我设置的是questions_topics,可能不是系统自动解析的question_topic
12 )->withTimestamps();//withTimestamps操作questions_topics表中create_at及updated_at字段的;
13 }
14 }
15
修改Question.php文件:
1 class Question extends Model
2 {
3 //
4 protected $fillable = ['title', 'content', 'user_id'];
5
6 public function topics()
7 {
8 return $this->belongsToMany(
9 Topic::class,
10 'questions_topics' //表名我设置的是questions_topics,可能不是系统自动解析的question_topic
11 )->withTimestamps();//withTimestamps操作questions_topics表中create_at及updated_at字段的
12 }
13 }
14
话题与问题关系建立完成。
Laravel Vuejs 实战:开发知乎 (9)定义话题与问题关系的更多相关文章
- Laravel Vuejs 实战:开发知乎 (6)发布问题
1.view部分: 安装一个扩展包:Laravel-UEditor composer require "overtrue/laravel-ueditor:~1.0" 配置 添加下面 ...
- Laravel Vuejs 实战:开发知乎 (10)使用 Select2 优化话题选择
1.添加选择Topic 使用Select2,如何安装Select2 ,具体使用实例 Select2 and Laravel: Ajax Autocomplete 及 Loading data remo ...
- Laravel Vuejs 实战:开发知乎 (2)用户登录
1.安装一个给用户提示的扩展包: 二选一: https://github.com/laracasts/flash [我选的这个]https://github.com/oanhnn/laravel-fl ...
- Laravel Vuejs 实战:开发知乎 (8)美化编辑器
1.使用UEditor增量包: simple-ueditors 执行下载: git clone https://github.com/JellyBool/simple-ueditor.git 2.用此 ...
- Laravel Vuejs 实战:开发知乎 (3)本地化和自定义消息
1.本地化 由于所有blade默认采用的是 _('')方式输出标签文本,所以可以安装一个语言包,直接指定本地语言为zh_CN即可: 安装 https://github.com/caouecs/Lara ...
- Laravel Vuejs 实战:开发知乎 (2)用户注册
1.本节需要发送验证邮件 2.教程使用SendCloud发送邮件 [我使用的是mailtrap] 3. composer require laravel/ui 安装完成后 php artisan ui ...
- Laravel Vuejs 实战:开发知乎 (1)项目环境配置和用户表设计
1.使用laragon新建laravel项目 zhihu 2.配置env文件的database设置 DB_DATABASE=zhihu 3.分析users表需要的字段 4.修改数据库迁移文件: cla ...
- Laravel Vuejs 实战:开发知乎 (5)设计问题表
1.执行命令: php artisan make:model Models/Question -cm 2.设计问题的数据库迁移文件中的字段: <?php use Illuminate\Datab ...
- Laravel Vuejs 实战:开发知乎 (7)验证问题表单字段
上一节代码中已经实现 下面代码中的validate内部配置就是: public function store(Request $request) { // $data = $request->v ...
随机推荐
- 【Python】遍历循环
- bootstrap图片上传控件 fileinput
前端 1.要引用的js fileinput.js fileinput.css <link type="text/css" rel="stylesheet& ...
- PP: Reconstructing time series into a complex network to assess the evolution dynamics of the correlations among energy prices
Purpose detect the dynamics in time series of their correlation Methodology 1. calculate correlation ...
- word doc转pdf
from win32com.client import constants, gencache # TODO pip install pywin32 -i http://mirrors.aliyun. ...
- 关于pip命令的几点提醒
pip install xxxxx 总会遇到安装失败,或者下载速度很慢的情况.这是因为从国外安装资源包,造成速度慢,那有咩有国内的源呢,有的. 国内源: 清华:https://pypi.tuna.ts ...
- spring bean 的作用域
spring bean 的作用域: 1.单例(singleton):默认是单例模式,也就是说不管给定的bean被注入到其他bean多少次,注入的都是同一个实例. 2.原型(prototype):每次注 ...
- util之Map
1.定义 Map<String, Integer> map = new HashMap<String,Integer>(); 2.判断map中是否存在某个键的值: if(map ...
- python之路之线程,进程,协程
一.线程和进程概述 1.python线程的Event 2.python线程其他和队列以及生产者消费者 3. 使用multprocessing创建进程 4.进程间数据共享方式——sharedmeory( ...
- layui之弹出层关闭和刷新问题
本篇文章是根据本人实际开发的例子来讲的,不一定适用各位看官的情况 描述: 主页面,弹出第一个弹框,第一个弹框中在弹出第二个弹框,如图: 1是主页面,2是子弹窗,3是孙弹窗 功能一:好了,第一个我要实现 ...
- vmware Linux虚拟机挂载共享文件夹
本文主要是记录vmware linux虚拟机如何挂载共享文件夹过程,以备不时之需. 设置允许共享文件夹 1. 启用共享文件夹 [VM]->[settings]->[Options]-> ...