2016-04-08 4 views
0

cakephp 3でこのSQL文を作成するにはどうすればよいですか?CakePHP 3 DeleteAll最初の4文字はhttpではない

delete FROM bookmarks WHERE substring(url , 4) != 'http' 

Iveが試みました。

$this->Bookmark->deleteAll('substring(Bookmark.url,4) !=' => 'http',false); 

CakePHPはサブストリングまたはLEFT()関数のように、この程度

+0

"_doesn't like_は、" 適切な問題の説明ではありません!おそらくそれが立て続けに答えることができるにもかかわらず、常に正確に何が起きているのか、何が起こるのかについて常にできるだけ具体的にしてください。 – ndm

+0

また、恐らく** http://stackoverflow.com/questions/30845997/how-to-genereate-sql-function-calls-with-the-cakephp-query-builder**の重複したものです。 – ndm

答えて

0

どのようにdoesntの:

$this->Bookmark->deleteAll([ 
    'NOT' => ['SUBSTRING(url, 1, 4)' => 'http'], 
]); 
+0

これは、 'DELETE'クエリと同様に、条件キーがエイリアス・ストリッピングの対象となるような無効なSQLを生成します。これは基本的に" _give me everything of possible dot_ "のように動作します。 url、4)= 'http') '。エイリアスがなくても動作しますが、オートクォートと方言変換をサポートする式を使用する方が、よりポータブルな選択肢になります(「SUBSTRING」はまだ変形されていません)。ちなみに、「4」だけでなく、「1、4」である必要があります。 – ndm

+0

はい、それを修正する方法がわからない間違ったクエリを作成しました。これは、部分文字列のSQL関数を無視しているようです。 出力; から削除 WHERE NOT(url、4)= 'http' –

関連する問題