0

我在 has_many-through 关系方面遇到了很多问题,但最后我在这里找到了很好的例子,它解决了我的大部分问题。但是,根据下面提供的代码,我有几个问题。
首先,代码:

$artists = ORM::factory('artist')->find_all();
foreach ( $artists as $artist )
{
    foreach ( $artist->media->find_all() as $m )
    {
        echo $m->name;
    }
}

1)这个例子可能是控制器。如果我想存储media$artists发送一个变量来查看怎么办?是否可以在艺术家对象中存储media为媒体属性?(我的意思是例如$artists[0]->media[0]->name) 2)没有这个循环
是否可以完全加载?$artists

4

2 回答 2

1

1)如果我理解正确,您需要从媒体中获取一些元素

$artists = ORM::factory('artist')->find_all()->as_array();
$media = $artists[0]->media->find_all()->as_array(); // media of first artist
$name = $media[0]->name;

2) 见上文 $artists 是一个 ORM 对象数组

于 2013-09-05T10:29:07.317 回答
0

根据我的评论,这就是我要做的。

class Model_Artist extends ORM {

    ///
    /// Whatever you have now
    ///

    private $_media_cache = NULL;

    public function media($key = NULL)
    {
        // Check cache
        if($this->_media_cache == NULL)
        {
            $this->_media_cache = $this->media->find_all();
        }

        if($key !== NULL)
        {
             // Use Arr::get in case index does not exist
             // Return empty media object when it does not exist so you can 
             // 'harmlessly' ask for its properties
             return Arr::get($this->_media_cache, $key, ORM::factory('Media'));
        }

        return $this->_media_cache;
    }
}

可调用为

$artists[0]->media(0)->name
于 2013-09-06T14:00:56.393 回答