Open ahebrank opened 5 years ago
Fixed some bugs:
This doesn't work when multiple grid fields with a relationships column exist in the channel entry. Only the first grid field will get relationships returned. Took out lines 513, 514 and 537 to fix this.
Lines 523 - 526 are duplicated on lines 528 - 531. Removed duplicate lines 528 - 531
protected function entries_grid_relationship($grid_col_id, $grid_row_id, $entry_id)
{
$query = ee()->db->select('parent_id, child_id, grid_field_id, grid_col_id, grid_row_id, field_id, fluid_field_data_id')
->where_in('parent_id', $this->entries_entry_ids)
->where('grid_col_id', $grid_col_id)
->order_by('order', 'asc')
->get('relationships');
foreach ($query->result_array() as $row)
{
if ( ! isset($this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']]))
{
$this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']] = array();
}
$this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']][] = (int) $row['child_id'];
}
$query->free_result();
if (isset($this->entries_grid_relationship_data[$grid_col_id][$entry_id][$grid_row_id]))
{
return $this->entries_grid_relationship_data[$grid_col_id][$entry_id][$grid_row_id];
}
return array();
}
Fixed some bugs:
- This doesn't work when multiple grid fields with a relationships column exist in the channel entry. Only the first grid field will get relationships returned. Took out lines 513, 514 and 537 to fix this.
- Lines 523 - 526 are duplicated on lines 528 - 531. Removed duplicate lines 528 - 531
protected function entries_grid_relationship($grid_col_id, $grid_row_id, $entry_id) { $query = ee()->db->select('parent_id, child_id, grid_field_id, grid_col_id, grid_row_id, field_id, fluid_field_data_id') ->where_in('parent_id', $this->entries_entry_ids) ->where('grid_col_id', $grid_col_id) ->order_by('order', 'asc') ->get('relationships'); foreach ($query->result_array() as $row) { if ( ! isset($this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']])) { $this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']] = array(); } $this->entries_grid_relationship_data[$grid_col_id][$row['parent_id']][$row['grid_row_id']][] = (int) $row['child_id']; } $query->free_result(); if (isset($this->entries_grid_relationship_data[$grid_col_id][$entry_id][$grid_row_id])) { return $this->entries_grid_relationship_data[$grid_col_id][$entry_id][$grid_row_id]; } return array(); }
This doesn't seem to work either... :(
Relationship fields within grids aren't followed down the rabbit hole to fetch the child_id out of the separate relationship table. This adds that relationship lookup (with caching like the existing lookups).