gpt4 book ai didi

php - 是否可以使用 Eloquent 方式为模型获取不同模型类型的集合?

转载 作者:行者123 更新时间:2023-12-02 01:25:34 26 4
gpt4 key购买 nike

如果我有一个模型需要一个属性,该属性是不同模型的数组。有没有 Eloquent 方法或方法来处理这类问题?

例如。我有一个Feature 模型,它需要一种方法来获取来自不同模型的对象数组。

class Feature extends Model
{

public function getArrayOfDifferentObjects()
{
$array_of_objects=array();

???? ELOQUENT to get objects from different models ????

return $array_of_objects;
}

}

我有一个包含以下内容的feature_model_connections 表:

  • feature_id
  • featured_model_id
  • featured_model_type

featured_model_type 值将是表示模型类型的字符串。model_id 将是相关模型表的外键。

但是我看不出您如何能够使用 Eloquent 为特征模型中的 getArrayOfDifferentObjects 方法返回数据。

任何指针将不胜感激。非常感谢,J

最佳答案

你在那里描述的,基本上是一个多态关系,它可以处理这些情况,并使获取它们变得容易,而不是我在编造案例,阅读文档,它写得很好,在 Polymorphic Relations 部分下。 https://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relations

现在在你的范围内,你可以做这样的事情。

public function getArrayOfDifferentObjects()
{
$objects = [];

$features = DB::table('feature_model_connections')
->select('feature_id', 'featured_model_id', 'featured_model_type')->get();

foreach($features as $feature)
{
$type = '\\App\\' . $feature->featured_model_type; //App is you app namespace

$model = $type::find($feature->featured_model_id);

if($model)
$objects[] = $model;
}

return $objects;
}

这个的基础是,你可以定义不同的类型,使用app namespace seed,从那里静态调用它们,这将访问数据库表中的预定义类型,然后找到元素并将其添加到数组。话虽如此,这是在我的脑海中完成的,没有编译检查,没有在 Laravel 中运行,但它应该会让你知道该怎么做,如果你可以改变你的结构,使用Polymorphic Relations,它真的很棒。

关于php - 是否可以使用 Eloquent 方式为模型获取不同模型类型的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37279286/

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