Skip to content

Commit

Permalink
DOC Document using raw SQL to query join tables (#508)
Browse files Browse the repository at this point in the history
  • Loading branch information
GuySartorelli authored May 13, 2024
1 parent 6182773 commit d10e763
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion en/02_Developer_Guides/00_Model/02_Relations.md
Original file line number Diff line number Diff line change
Expand Up @@ -530,10 +530,20 @@ class TeamSupporter extends DataObject
You can filter on the relation by the extra fields automatically, assuming they don't conflict with names of fields on other tables in the query.
```php
$team = Team::get()->byId(1);
$team = Team::get()->byID(1);
$supporters = $team->Supporters()->filter(['Ranking' => 1]);
```
If the field names conflict, you can explicitly query the field from the join record using raw SQL. There are potential security concerns to consider with this approach. See [raw SQL](/developer_guides/model/data_model_and_orm/#raw-sql) for more information.
```php
use SilverStripe\ORM\DataObject;
$rankingColumn = DataObject::getSchema()->sqlColumnForField(TeamSupporter::class, 'Ranking');
$team = Team::get()->byID(1);
$supporters = $team->Supporters()->where([$rankingColumn => 1]);
```
> [!TIP]
> For records accessed in a [`ManyManyThroughList`](api:SilverStripe\ORM\ManyManyThroughList), you can access the join record (e.g. for our example above a `TeamSupporter` instance) by calling [`getJoin()`](api:SilverStripe\ORM\DataObject::getJoin()) or as the `$Join` property in templates.
Expand Down

0 comments on commit d10e763

Please sign in to comment.