// show indexes of table SHOW CREATE TABLE news; // shows something like this ... CONSTRAINT `FK_3A51546D12469DE2` FOREIGN KEY (`category_id`) REFERENCES `news_category` (`id`), ... // drop index ALTER TABLE news DROP FOREIGN KEY FK_3A51546D12469DE2;
Schlagwort: sql
Wer in Doctrine Tabellen joinen möchte ohne das diese durch Entity Relationen definiert sind, kann folgendermaßen vorgehen:
public function getInvoicesNotInElster() { $query = $this->em->createQueryBuilder() ->select('i') ->from('AcmeAppBundle:Invoice', 'i') ->leftJoin('AcmeAppBundle:Elster', 'e', 'WITH', 'e.number = i.number_origin') ->where('i.cancelled = 0') ->andWhere('e.number IS NULL') ->getQuery(); return $query->getResult(); }
um aus bestehenden mysqldumps die user@host definer zu entfernen kann man folgendes tun
~ $ sed -r -e "s/\/\*[^\/]*DEFINER.*\*\///g" < mysqldump.sql > mysqldump-exdefiner.sql
Kategorien
mysqldump ohne definer
um hostunabhängige mysql dumps zu erzeugen, muss man die definer aus dem jeweiligen dump entfernen.
mit sed kann man das gleich beim erzeugen des dumps:
mysqldump database -ufoo -pbar -hlocalhost | sed "s/\/\*[^\/]*DEFINER.*\*\///g" > dump_without_definer.sql
Die Propel ORM für PHP bedient sich einer eigenen Syntax (Criterias) um Queries zusammenzustellen.
Hier gibt es einen Criteria Builder, den man mit Standard SQL füttern kann.
Der Criteria Builder konvertiert sodann das eingegebene SQL Statement in ein Propel Criteria.
So wird aus diesem kleinen SQL Statement:
SELECT user.* FROM user WHERE user.state = 100 AND (user.name = 'user' OR user.email = 'user@domain.tld')
diese Propel Criteria:
$c = new Criteria(); $crit0 = $c->getNewCriterion(UserPeer::STATE, 100); $crit1 = $c->getNewCriterion(UserPeer::NAME, 'user'); $crit2 = $c->getNewCriterion(UserPeer::EMAIL, 'user@domain.tld'); // Perform OR at level 1 ($crit1 $crit2 ) $crit1->addOr($crit2); // Perform AND at level 0 ($crit0 $crit1 ) $crit0->addAnd($crit1); // Remember to change the peer class here for the correct one in your model $c->add($crit0); $result = TablePeer::doSelect($c); // This loop will of course need to be edited to work foreach ($result as $obj) { //$val = $obj->getValue(); }
Einen Versuch ist es Wert.