atk4\data\Persistence_SQL::initQueryFields PHP Method

initQueryFields() public method

Adds model fields in Query.
public initQueryFields ( Model $m, atk4\dsql\Query $q, array | null $fields = null )
$m Model
$q atk4\dsql\Query
$fields array | null
    public function initQueryFields($m, $q, $fields = null)
    {
        if ($fields) {
            // Set of fields is strictly defined for purposes of export,
            // so we will ignore even system fields.
            foreach ($fields as $field) {
                $this->initField($q, $m->getElement($field));
            }
        } elseif ($m->only_fields) {
            $added_fields = [];
            // Add requested fields first
            foreach ($m->only_fields as $field) {
                $f_object = $m->getElement($field);
                if ($f_object instanceof Field && $f_object->never_persist) {
                    continue;
                }
                $this->initField($q, $f_object);
                $added_fields[$field] = true;
            }
            // now add system fields, if they were not added
            foreach ($m->elements as $field => $f_object) {
                if ($f_object instanceof Field && $f_object->never_persist) {
                    continue;
                }
                if ($f_object instanceof Field_SQL && $f_object->system && !isset($added_fields[$field])) {
                    $this->initField($q, $f_object);
                }
            }
        } else {
            foreach ($m->elements as $field => $f_object) {
                if ($f_object instanceof Field_SQL) {
                    if ($f_object->never_persist) {
                        continue;
                    }
                    $this->initField($q, $f_object);
                }
            }
        }
    }