我有Cam模型,对于每个摄像头,我在服务器上有一个带有图像的文件夹。我只需要在自定义属性中获取所有图像名称,但我不明白。无需在表中调用操作。我尝试扩展构造函数,但没有运气。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Cam extends Model
{
protected $table = 'cams';
protected $guarded = 'id';
public $timestamps = false;
public $images = null;
public function __construct($attributes = array())
{
parent::__construct($attributes);
$this->images = 'kk';
}
public function getVideosAttribute($value) {
return explode(',', $value);
}
public function city() {
return $this->belongsTo('App\City');
}
}
答案 0 :(得分:1)
我会选择这样的东西(我假设您的$images
变量仅用于测试,而且它不是数据库中表格中的列。)
您可以添加到Cam
型号:
protected $images= null;
现在你的新方法:
public function getImagesAttribute($value) {
if ($this->images === null) {
$this->images = glob(storage_path('cams/'.$this->id.'/*'));
}
return $this->images;
}
现在每个Cam都可以使用:
dd($cam->images)
获取所选Cam的图像列表
在上面的代码中,我假设您的凸轮图像位于storage/cams/{$cam_id}/
路径中,并且您在该文件夹中只有图片
现在你可以使用例如以下代码获取凸轮并显示图像:
$cams = Cams::all();
foreach ($cams as $cam)
{
echo implode("\n", $cam->images);
}
当然,如果您有数千个文件,您应该将文件名存储在数据库中,因为它可能比每次扫描磁盘更有效,但一切都取决于您的应用程序使用情况。