# |
Jan 6th 2020, 20:12 |
challgren |
why not just use author_id instead? |
# |
Jan 6th 2020, 20:12 |
thisimpetus |
no joy, hunh? : / Can I clarify my question somehow, if anyone's reading? |
# |
Jan 6th 2020, 19:53 |
thisimpetus |
(and apologies if what I'm asking is terribly unclear!) |
# |
Jan 6th 2020, 19:52 |
thisimpetus |
hasMany association has an extra field (ordinance)? |
# |
Jan 6th 2020, 19:52 |
thisimpetus |
I'm planning to just generate the form inputs for each selected Author dynamically, but I'm not sure what that should look like in order for Cake to properly create the record on the back end. I know it used to be something like giving a `name` attribute to the field akin to `[Publications][Authors][id]`. How should I create records where the |
# |
Jan 6th 2020, 19:50 |
thisimpetus |
'ordinance' field for Authors (and this is reflected in the Authors model). Here's where I'm stuck: |
# |
Jan 6th 2020, 19:50 |
thisimpetus |
Hey cake gurus. I've built a more involved UI for creating records for models with a hasMany association (here, Publication hasMany Authors). So where Cake bakes something like ` $this->Form->control( 'authors._ids', ['options' => $authors)`, I've built a javascript UI that's a little more graphical, and, importantly, also allows adding an |
# |
Jan 6th 2020, 18:41 |
ashesh.social |
I’m getting error when following the documentation |
# |
Jan 6th 2020, 18:40 |
ashesh.social |
I’m getting when following the documentation |
# |
Jan 6th 2020, 18:40 |
ashesh.social |
How to run shell scripts in cakephp 4 ?? |
# |
Jan 6th 2020, 17:36 |
ckjksl |
Alternatively, I've also tried saving it as associated data: ```$asset->tags = $assettags; $this->Assets->save($asset);``` But the duplication still happens, like the saveStrategy isn't being applied at all. |
# |
Jan 6th 2020, 17:33 |
ckjksl |
Then I link them: ```$assetsTable = TableRegistry::getTableLocator()->get('Assets'); $assetsTable->tags->link($asset, $assettags);``` According to the saveStrategy=>replace, I should be replacing its related tags completely. But what happens is that I click on that postlink three times, and I'll end up with those tag associations three times, to a total of 9. |
# |
Jan 6th 2020, 17:31 |
ckjksl |
Then for each of that tags array, I retrieve the tag and put it in an array: ```$tagEntity = $this->tags->find()->where(['title'=>$tag])->first(); $assettags[] = $tagEntity;``` |
# |
Jan 6th 2020, 17:28 |
slackebot |
array('id'=>"1", 'tags'=>['sleepy', 'smelly', 'happy']) ) );``` All that should do is update the tags for `asset` id 1 with 3 tags. |
# |
Jan 6th 2020, 17:28 |
ckjksl |
I think the relations are okay, because they're associating and saving okay, and I can retrieve the results. The problem happens when I try to add more tags. in my `test.ctp`, I have the following POST link: ```echo $this->Form->postLink( 'Update Tags (asset_id 1, \'sleepy\', \'smelly\', \'happy\' )', array('controller' => 'Assets','action' => 'updateTags'), array( 'confirm' => 'Are you sure?', 'data' => |
# |
Jan 6th 2020, 17:25 |
ckjksl |
so in the model, `AssetsTable` has: ```$this->belongsToMany('Tags', [ 'joinTable' => 'AssetTags', 'saveStrategy'=>'replace' ]);``` `TagsTable` has: ```$this->belongsToMany('Assets', [ 'joinTable' => 'AssetTags', 'saveStrategy'=>'replace' ]);``` `AssetTagsTable` has: ```$this->belongsTo('Assets', [ 'foreignKey' => 'asset_id', ]); $this->belongsTo('Tags', [ 'foreignKey' => 'tag_id', ]);``` |
# |
Jan 6th 2020, 17:22 |
ckjksl |
I'm having a bit of trouble with a simple "toxi" tag solution. This is where there are three tables, `assets`, `tags`, and `assettags`, which contains `asset_id` and `tag_id` as a lookup. I've tried a couple of ways, but the part that's failing for me is `'saveStrategy' => 'replace'` |
# |
Jan 6th 2020, 16:43 |
ricksaccous |
but that would be too hard to explain to you, heh |
# |
Jan 6th 2020, 16:43 |
ricksaccous |
you can also do an inner join and then directly search on the field |
# |
Jan 6th 2020, 16:42 |
ricksaccous |
if you want them in the match then just do something similar but do $this->Matches->find()->where(['Matches.id' => $id])->contain(['SeasonPlayers' => function ($q) |
# |
Jan 6th 2020, 16:42 |
ricksaccous |
$seasonPlayerEntities = $this->Matches->SeasonPlayers->find(['SeasonPlayers.club_id' => $matchEntity->field_name])->toArray(); |
# |
Jan 6th 2020, 16:40 |
gianmarxgagliardi |
I would like to compare the underlined fields in order to take only the players who are associated with a certain id and not all the players |
# |
Jan 6th 2020, 16:40 |
ricksaccous |
whatever you can just do this $matchEntity = $this->Matches->get($id); |
# |
Jan 6th 2020, 16:39 |
ricksaccous |
just id? |
# |
Jan 6th 2020, 16:39 |
ricksaccous |
of Matches |
# |
Jan 6th 2020, 16:39 |
ricksaccous |
what is the primary key |
# |
Jan 6th 2020, 16:39 |
slackebot |
<gianmarxgagliardi> |
# |
Jan 6th 2020, 16:38 |
ricksaccous |
it's related to the Matches.home_id ? |
# |
Jan 6th 2020, 16:38 |
ricksaccous |
but it isn't related to id huh |
# |
Jan 6th 2020, 16:38 |
ricksaccous |
ohhh |
# |
Jan 6th 2020, 16:37 |
ricksaccous |
$matchEntity = $this->Matches->find()->matching('SeasonsPlayers', function ($query) use ($id) { return $query->where(['SeasonsPlayers.club_id' => $id]); })->contain(['Foo','Bar']); |
# |
Jan 6th 2020, 16:37 |
gianmarxgagliardi |
it gives me an empty set |
# |
Jan 6th 2020, 16:36 |
gianmarxgagliardi |
it gives me the whole empty |
# |
Jan 6th 2020, 16:36 |
ricksaccous |
replace where with matching i already told you |
# |
Jan 6th 2020, 16:35 |
gianmarxgagliardi |
```$matchHome1 = $this->Matches->find('all') ->where(['MatchPlayers.SeasonPlayers.club_id' => $matchHome->club_home_id]) ->contain(['SeasonReferees','SeasonReferees.Referees', 'ClubsHome', 'MatchPlayers','MatchPlayers.SeasonPlayers','MatchPlayers.SeasonPlayers.Players']);``` |
# |
Jan 6th 2020, 16:34 |
gianmarxgagliardi |
ok it turns but some problem |
# |
Jan 6th 2020, 16:27 |
ricksaccous |
i'll help |
# |
Jan 6th 2020, 16:27 |
ricksaccous |
read the thing and try to figure it out if you still have trouble after reading |
# |
Jan 6th 2020, 16:27 |
gianmarxgagliardi |
? |
# |
Jan 6th 2020, 16:27 |
gianmarxgagliardi |
how could I do |
# |
Jan 6th 2020, 16:23 |
ricksaccous |
etc |