douwei7203 2015-10-04 10:45
浏览 67

我可以从静态数组中填充一组Eloquent模型吗?

I'm using Laravel 5.1 and its Eloquent model with mysql.

But I would like to populate a collection of models fetching a static array and then querying it as normal. So let's say I have my Photo model and I would query it as usual:

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

But the Photo model should fetch not a DB table but an array like this:

$photos = [ 
    [ "id" => 1, "published" => 1 ],
    [ "id" => 2, "published" => 1 ],
    [ "id" => 2, "published" => 0 ],
]

My problem is to link this array to that model before querying it. Any ideas?

  • 写回答

2条回答 默认 最新

  • doushishi6513 2015-10-04 11:07
    关注

    Don`t know why you want this but if I were you I would put every query method in a service class:

    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();
        }
    }
    

    This way if you want to put them in a table or other changes occur in your app you just have to change this class.

    Problem: If you have a model that has a relation to this model you would have to use the service to get it (getPhotoById($user->getPhotoId())) rather than for ex $user->getPhoto(). Or you can:

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

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。