lararel - each函數的使用

需求:查找生效中的臨時角標,有則返回,否則返回長期角標。

代碼實現:

		$corner_mark = [];
        $corner_mark_id = 0;
        $model->cornerMark->each(function ($relationValue) use (&$corner_mark, &$corner_mark_id) {
            if ($relationValue->validity_type == 2 &&
                $relationValue->validity_start <= date('Y-m-d H:m:s') &&
                $relationValue->validity_end >= date('Y-m-d H:m:s')) {
                // 生效中的臨時角標
                $corner_mark = $relationValue->only('title', 'image', 'group');
                $corner_mark_id = $corner_mark->id ?? 0;
                return false;
            } elseif ($relationValue->validity_type == 1) {
            	// 長期角標
                $corner_mark = $relationValue->only('title', 'image', 'group');
                $corner_mark_id = $corner_mark->id ?? 0;
                return false;
            }
        });

each源碼分析:each 函數用 return false 中斷。

    /**
     * Execute a callback over each item.
     *
     * @param  callable  $callback
     * @return $this
     */
    public function each(callable $callback)
    {
        foreach ($this->items as $key => $item) {
            if ($callback($item, $key) === false) {
                break;
            }
        }

        return $this;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章