gpt4 book ai didi

mysql - Laravel 许多模型作为 Publisher 与枢纽的多态关系?

转载 作者:行者123 更新时间:2023-11-29 09:48:13 24 4
gpt4 key购买 nike

您好,我在关系和数据库设计方面遇到问题。

有三个名为 'articles' 、 'users' 和 'companies' 的表,每个表都有一个名为 id 的属性:

"articles" -id

"users" -id

"companies" -id

文章表包含许多发布者,这些发布者是用户模型或公司模型。

我的数据透视表必须类似于“authors”-id、-model_id、-model_name、-article_id

是否有任何方法可以通过单个查询从一个集合中的模型中获取文章的发布者 ID 和数据?也许我误解了这个问题,对于这种情况有一个更简单的解决方案。

提前致谢

最佳答案

假设文章只有一个公司或一个用户,正确的方法是执行一对多(多态)关系,创建包含这些列的表:-{ 文章 ID 、 文章 ID 、 文章类型 }然后在你的模型中定义它

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
/**
* Get all of the owning articleable models.
*/
public function articleable()
{
return $this->morphTo();
}
}

和用户表:-

class Userextends Model
{
/**
* Get all of the user's articles.
*/
public function articles()
{
return $this->morphMany('App\Article', 'articleable');
}
}

与公司模型相同:-

class Company extends Model
{
/**
* Get all of the companies articles.
*/
public function articles()
{
return $this->morphMany('App\Article', 'articleable');
}
}

然后您可以使用以下方法检索关系:-

$user = App\User::find(1);

foreach ($user->articles as $article) {
// do this
}

如上所述here

但是如果文章可以有多个用户或公司,那么您必须执行如上所述的多对多多态 here

关于mysql - Laravel 许多模型作为 Publisher 与枢纽的多态关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288975/

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