gpt4 book ai didi

php - 如何在 Laravel 架构构建器中制作 [anyType] 数组?

转载 作者:行者123 更新时间:2023-11-30 21:34:52 24 4
gpt4 key购买 nike

假设我有一个用户模式,它将“爱好”链接到它,作为一个数组字符串。

我最近从 MongoDB 切换到 SQL,所以,我的第一个想法是像 Mongo 一样接近它,并做出这样的东西;

var userSchema = new mongoose.Schema({
username: String,
password: String,
hobbies: [String] });

所以,我尝试像这样对 Laravel 架构构建器实现相同的逻辑;

Schema::create('users', function (Blueprint $table) {
$table->string('username');
$table->string('password');
$table->array(string('hobbies')); //array(string("test")) is just a mock syntax, I just researched how can I implement an array type here and learned that I can't

现在我想到了两个解决方案,一个是想办法把它实现成一个数组,或者,由于 schemabuilder 不支持在此处放置数组类型,这不是我可以使用的最佳逻辑,我需要找到另一种方法来将我的“用户”模式添加到“爱好”数组。 (我唯一能想到的就是创建一个“爱好”模式并使用 Eloquent 关系将它们绑定(bind)在一起,但这似乎不太实际)

最佳答案

最好的 方法是使用 Eloquent Relationships .我不确定为什么它在您的情况下不实用。

在您的特定情况下,User 可以有多个 Hobby 并且 Hobby 也可以属于多个 User.

这就是您的人际关系:

// in App\User.
public function hobbies()
{
return $this->hasMany(Hobby::class);
}

// in App\Hobby
public function users()
{
return $this->belongsToMany(User::class);
}

您需要在您拥有的两个表中相应地定义您的外键。此外,一个 many-to-many relationship需要第三张 table 。在您的情况下,它将被称为:hobby_user

要访问用户的爱好,您只需执行以下操作:

App\User::find(1)->hobbies;

虽然您也可以将爱好保存为字符串(.. 或 JSON ),但如果您想进行查询、报告等,以后可能会很麻烦。

关于php - 如何在 Laravel 架构构建器中制作 [anyType] 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com