Join where podmínek u mazání

kiCkZ
Člen | 153
+
0
-

Ahoj,

@DavidGrudl prosimtě neuvažoval si o přidání join WHERE v metodě delete() ?
Všiml jsem si, že to nyní není možné a říkám si, zda by to nebylo dobré přidat.

Díky za info

David Grudl
Nette Core | 8116
+
0
-

Nevím uplně co myslíš, ale ideálně pošli PR.

kiCkZ
Člen | 153
+
0
-

David Grudl napsal(a):

Nevím uplně co myslíš, ale ideálně pošli PR.

$context->table('table')
	->where('table.profile', 10) // toto nejde, protože máš navěšený jen where bez join
	->delete();

Editoval kiCkZ (8. 1. 2021 23:49)

CZechBoY
Člen | 3608
+
0
-

Normalne jsem takhle mazal tak se mi to nezda… zkus dat pryc nazev tabulky.
Pripadne posli chybovou hlasku/vygenerovane nefunkcni sql.

kiCkZ
Člen | 153
+
0
-

CZechBoY napsal(a):

Normalne jsem takhle mazal tak se mi to nezda… zkus dat pryc nazev tabulky.
Pripadne posli chybovou hlasku/vygenerovane nefunkcni sql.

Do toho delete sql se ten join nepřidá a ani není přímo v té knihovně ten whereJoin, takže to fungovat nemůže.

Kamil Valenta
Člen | 758
+
0
-

kiCkZ napsal(a):

$context->table('table')
	->where('table.profile', 10) // toto nejde, protože máš navěšený jen where bez join
	->delete();

Já v tom tedy žádný join druhé tabulky nevidím…

Mysteria
Člen | 797
+
0
-

Podle mě je jenom špatně napsanej příklad, myslel spíš něco jako tohle:

$context
	->table('book')
	->where('author.surname', 'Němcová')
	->delete();

// DELETE FROM book b JOIN author a ON b.author_id = a.id WHERE a.surname = 'Němcová';
kiCkZ
Člen | 153
+
0
-

Mysteria napsal(a):

Podle mě je jenom špatně napsanej příklad, myslel spíš něco jako tohle:

$context
	->table('book')
	->where('author.surname', 'Němcová')
	->delete();

// DELETE FROM book b JOIN author a ON b.author_id = a.id WHERE a.surname = 'Němcová';

Nemyslim si, že je špatně napsaný, prostě vkládám klasický nette zápis joinu do wheru u delete funkce.

David Matějka
Moderator | 6445
+
0
-

pokud by to někdo chtěl implementovat, tak si dejte pozor, že ten přímočarý join funguje jen v některých databázích (třeba mysql), např postgres má syntaxi za pomocí „using“ a sqlite join v delete vůbec nepodporuje.