'object', ]; /** Included rows */ public function rows() { return $this->belongsToMany(Row::class, 'revision_row_pivot')->as('_row_pivot'); } /** Included rows * @param Column[] $columns * @return \Illuminate\Database\Query\Builder|static */ public function rowsData($columns, $withId=true) { $selects = $withId ? ["data->>'_id' as _id"] : []; foreach ($columns as $col) { $selects[] = "data->>'$col->id' as $col->name"; } return $this->rows()->select([])->selectRaw(implode(', ', $selects)); } /** Proposal that lead to this revision */ public function sourceProposal() { return $this->hasOneThrough(Proposal::class, 'revision_proposal_pivot'); } /** Proposals that depend on this revision */ public function dependentProposals() { return $this->hasMany(Proposal::class); } /** Revision this orignates from */ public function parentRevision() { return $this->belongsTo(Revision::class, 'ancestor_id'); } /** Tables referencing this revision */ public function tables() { return $this->belongsToMany(Table::class, 'table_revision_pivot'); } }