Php 我可以从静态数组中填充一组雄辩的模型吗?

Php 我可以从静态数组中填充一组雄辩的模型吗?,php,laravel,model,eloquent,Php,Laravel,Model,Eloquent,我使用的是Laravel5.1和它的mysql模型 但是我想填充一个模型集合,获取一个静态数组,然后像正常情况一样查询它。 假设我有我的照片模型,我会像往常一样查询它: App\Photo::where('published', 1)->get(); 但是照片模型不应获取DB表,而应获取如下数组: $photos = [ [ "id" => 1, "published" => 1 ], [ "id" => 2, "published" => 1

我使用的是Laravel5.1和它的mysql模型

但是我想填充一个模型集合,获取一个静态数组,然后像正常情况一样查询它。 假设我有我的照片模型,我会像往常一样查询它:

App\Photo::where('published', 1)->get();
但是照片模型不应获取DB表,而应获取如下数组:

$photos = [ 
    [ "id" => 1, "published" => 1 ],
    [ "id" => 2, "published" => 1 ],
    [ "id" => 2, "published" => 0 ],
]
我的问题是在查询之前将该数组链接到该模型。
有什么想法吗?

我不知道你为什么想要这个,但如果我是你,我会把每个查询方法都放在服务类中:

namespace App\Services;
class PhotoService implements PhotoServiceInterface
{
    public function getAllPhotos() {
        return App\Photo::$photos;
    }

    //your static array defined in the class as an associative array, you should use **try** **catch** for this or define a default if the key does not exist
    public static function getPhotoById($id) {
        return App\Photo::$photos[$id];
    }

    //other functions
    public function getAllAlbums() {
        return App\Albums::all();
    }
}
这样,如果你想把它们放在一个表中,或者你的应用程序中发生了其他变化,你只需要改变这个类

问题: 如果您有一个与此模型相关的模型,则必须使用该服务来获取它(
getPhotoById($user->getPhotoId())
),而不是用于ex
$user->getPhoto()
)。 或者你可以:

class User
{
    ....
    public function getPhoto() {
        return App\Services\PhotoService::getPhotoById($this->photo_id);
    }
    ....
}

我不知道你为什么想要这个,但如果我是你,我会把每个查询方法都放到服务类中:

namespace App\Services;
class PhotoService implements PhotoServiceInterface
{
    public function getAllPhotos() {
        return App\Photo::$photos;
    }

    //your static array defined in the class as an associative array, you should use **try** **catch** for this or define a default if the key does not exist
    public static function getPhotoById($id) {
        return App\Photo::$photos[$id];
    }

    //other functions
    public function getAllAlbums() {
        return App\Albums::all();
    }
}
这样,如果你想把它们放在一个表中,或者你的应用程序中发生了其他变化,你只需要改变这个类

问题: 如果您有一个与此模型相关的模型,则必须使用该服务来获取它(
getPhotoById($user->getPhotoId())
),而不是用于ex
$user->getPhoto()
)。 或者你可以:

class User
{
    ....
    public function getPhoto() {
        return App\Services\PhotoService::getPhotoById($this->photo_id);
    }
    ....
}

使用列表功能将返回您在查询中指定的列数组

 App\Photo::where('published', 1)->lists('id','published');

因此,您可以按照您希望的任何方式查询模型,让它返回放置在列表功能中的字段数组

使用列表功能将返回您在查询中指定的列数组

 App\Photo::where('published', 1)->lists('id','published');

因此,您可以以任何方式查询模型,让它返回列表中的字段数组功能

您可以提供一个示例吗?我认为此文档可以解决您的问题请阅读此文档,一旦您以雄辩的方式获取数据,您就可以通过查询返回数据库来反复过滤记录。@KA_lin我不能,因为我甚至不知道这是否可行。@umefarooq谢谢,但我找不到任何关于我的目的的线索:提供的示例的用户模型仍然是从真实的DB表中获取,然后使用集合/数组类进行查询结果。我在想一个伪代码,或者你希望它如何在宏观尺度上工作。你能提供一个例子吗?我认为这个文档可以解决你的问题。请阅读这个文档,一旦您以雄辩的方式获取数据,您就可以通过查询返回数据库来反复过滤记录。@KA_lin我不能,因为我甚至不知道这是否可行。@umefarooq谢谢,但我找不到任何关于我的目的的线索:提供的示例的用户模型仍然是从真实的DB表中获取,然后使用集合/数组类进行查询结果是,我在想一个伪代码,或者你希望它在宏观尺度上如何工作