yugihuang

1064 经验值

能具体说明一下需要安装什么扩展吗?

应该使用whereHas吧:)

$list = A::whereHas('relation', function ($query) use ($id) {
    $query->where('condition_id', '=', $id);
})->get();

不知道是否合口味, 望指正.


namespace App;
use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    protected $table = 'projects';

    public function shopProject()
    {
        return $this->hasMany('App\ShopProject', 'project_id', 'id');
    }

    public static function getAllProjectsWithCountSummary()
    {
        return (new Project)->with('shopProject')->get()->map(function ($project) {
            return [
                'id' => $project->id,
                'title' => $project->title,
                'countSummary' => $project->shopProject->sum(function ($shopProject) {
                    return $shopProject->count;
                })
            ];
        })->sortBy('countSummary');
    }
}

之前遇到过这种情况, 都是内存不足导致的.
如果没法加内存的话, 多配置些swap分区空间会有所缓解.

mysql5.7以后才原生支持json数据类型, 所以还是尽量避免这种设计吧.

可以像JellyBool老师说的那样, 使用Eloquent模型查出来后, 使用filter方法过滤掉一下,
首先是需要在模型中设置属性$casts = ['value' => 'array']

$filtered = $model->get()->filter(function($item) {
    return $item['value']['number'] < 100;
});

但是这样是不太好的设计, 浪费大量数据库查询时间, 而且占用大量内存.
而且实际工程中, 还要考虑更新, 并发(自增, 自减)等情况.
因此在数据库不原生支持JSON数据类型的情况下, 请三思再使用吧.

还有第一个图console里的内容也请贴一下, 截图不完整, 貌似没有测试对象

楼主头像跟我微信头像一样...
能贴一下phpunit.xml的配置信息吗?

这个网站真好.
正则表达式如果一段时间不用的话, 就得到处翻资料....

简单试了一下, 这样可否.

$str = 'hello {$name}{$id} ';
$pattern = '/\{(\s*\$\w+\s*)\}/';
$replacement = '<?php echo $1; ?>';
echo preg_replace($pattern, $replacement, $str);

我觉得没必要做无限级吧, 递归查询太慢了, 一般做3级就够了