- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以在 Laravel 5 中使用以下内容为相关表做种?
php artisan db:seed
我有两张 table
users
id
first name
projects
id
name
和一个数据透视表
project_user
project_id
user_id
我想创建一些用户和一些项目,然后将用户和他们各自的项目关联起来。
播种用户和项目不是问题,但我不确定如何处理数据透视表。
这可能吗?
最佳答案
当然可以。如果您使用的是 Eloquent,则可以简单地处理普通关系(也许是最简单的方法)。或者,如果您直接使用 SQL 构建器,您可以像往常一样提供表格,但您需要遵守您的外键规则。
只要试一试,您就会知道。但请确保导入您使用的类。
在两个模型之间添加关系很容易,但常见关系类型(和他的观点)之间存在一些差异:一对多、多对一和多对多。
一对多和多对一
假设您的每个项目都有一个创建者,也就是所谓的所有者,您可以在 User
之间建立 1:n 关系。和 Project
.
public class User {
public function ownedProjects() {
return $this->hasMany('App\Project');
}
}
public class Project {
public function owner() {
return $this->belongsTo('App\User');
}
}
在这种关系中,您可以附加 Project
到 User
或告诉 Project
他的主人是谁。
// Attach a project to an user
$project = Project::create([]);
User::find($id)->ownedProjects()->save($project);
// There is also a function saveMany() for an array of projects
// Tell the project who his owner is
$project = Project::create([]);
$project->owner()->associate(User::find($id));
多对多
在您的情况下,我们需要 Users
之间的多对多关系和 Projects
.语法有点不同,但结果非常直接。首先,我们需要两个模型之间的关系:
public class User {
public function projects() {
return $this->belongsToMany('App\Project');
}
}
public class Project {
public function users() {
return $this->belongsToMany('App\User');
}
}
然后我们可以像这样查询关系:
$project = Project::create([]);
User::find($id)->projects()->attach($project->id);
你也可以附加一大堆项目,从另一边做同样的事情,分离模型或同步它们,如果你想确保一个确切的数量(并且只有这个数量)是相关的:
// Adds a relation for the user to projects with ids 1, 2, 4 and 6
User::find($id)->projects()->attach([1, 2, 4, 6]);
// Adds the users with ids 19 and 173 to this project
Project::find($id)->users()->attach([19, 173]);
// Removes the user 19 from the projects relations
Project::find($id)->users()->detach(19);
// Removes all relations between this user and projects that are
// not listed in the synchronization array and adds a relation
// to all projects where none exists yet
User::find($id)->projects()->sync([4, 7, 19, 6, 38]);
这是多对多关系的正常语法,但您也可以像在一对多关系中一样附加模型:
// Creation of project could also be done before and saved to a variable
User::find($id)->projects()->save(Project::create([]));
关于php - 我可以使用 php artisan db :seed to seed related tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777770/
在全新的 Laravel 安装中,我正在运行 php artisan migrate 并且它正在返回: [Illuminate\Database\QueryException]
是否可以为 创建 Artisan 调用或命令 php artisan migrate 喜欢 Artisan::call('migrate); 因此,当连接动态更改时,我可以将丢失的表迁移到我的数据库。
我想创建一个别名,例如 php artisan go 而不是 php artisan 服务 我会感激任何其他想法:-)。我也读过这篇文章link并搜索了很多,但不太清楚,其他问题是关于制作 class
我在 Horizon 中使用 Laravel 队列和 Redis。Supervisor 正在运行 artisan horizon,它会生成进程 /usr/bin/php7.2 artisan
我在内核命令中工作,我需要更改旧命令: 旧命令是: php artisan crawl:author 现在我需要将其重命名为: php artisan crawl-bq:author 在我的命令文件签
我决定测试新的 Laravel。所以我从基本命令开始: $ laravel new blog $ php artisan make:auth $ php artisan migrate 我编辑了 Ap
在 Laravel 中注意到有两种方法可以清除缓存 php artisan cache:clear 和 php artisan config:cache 但是我意识到只有第二个在更改本地化、添加 la
我正在做一个 Lumen 项目。 我尝试使用 Artisan::call('my-command') 但是 PHP 说我没有定义 Artisan 类。 我已经使用以下命令启用了 Facade: $ap
那么 php artisan serve 到底在做什么呢?我目前有一个在 apache 上运行的站点,我正在尝试建立一个 websocket 框架以进行实时聊天。 websocket是一个后台运行的p
通常我会运行像这样的 laravel artisan 命令 php artisan Command -v 如果出现错误,我可以使用 -v 标志找到文件/行号。 出于某种原因,-v 不适用于我的命令之一
主表 POll public function up() { Schema::create('poll', function (Blueprint $table) {
您好,我在使用 php artisan migrate 在我的 vps 服务器上进行迁移时遇到问题。我已经安装了apache2和mysql。我可以通过 mysql -u root -p 使用密码“pa
由于某种原因,每当我运行任何 php artisan 命令时,我都会收到一条错误消息,指出我的一个表不存在。这是真的,我正在开始一个新的数据库。我不明白的是, artisan 到底为什么需要使用这张
我正在设置 Laravel 环境。所以,我下载了 XAMPP 并相应地配置了我的 vhost 文件。然后,我设置 MySQL 并运行以下命令: Composer 安装 npm 安装 php artis
我在我的 Mac 上运行本地 MAMP 机器。 Laravel 在生产环境中运行。 Laravel 能够在我通过浏览器显示的 php 页面上访问 MySQL 数据库,但是当我在终端中运行 php ar
我已经将我的 Laravel 5.5 项目上传到 centOS7 服务器。现在,当我第一次运行“php artisan migrate”加载数据库表时,我遇到了以下错误。 Error message
我正在运行一个基本的 artisan command test但是 phpunit 提示 This test did not perform any assertion。但是我断言了退出代码。 pub
我正在 Azure 上运行 Laravel 应用程序。事情正在朝着正确的方向发展,composer install 根本不起作用。然而现在,“php artisan optimize”命令超时了: 但
当我尝试运行 artisan 命令 php artisan route:list 时出现以下错误: [Symfony\Component\Debug\Exception\FatalErrorExcep
今天我遇到了一个我以前从未遇到过的非常奇怪的情况,而且在任何地方都找不到解决办法。 每当我在控制台中键入 php artisan 时,它都不会返回任何内容。尝试多次克隆 repo(在此处的其他机器上运
我是一名优秀的程序员,十分优秀!