お世話になります
テーブルデータのURLに同じものがあれば登録しないようにしたいのでModelに登録したのですが
foreachでループさせている関係なのか?Moddelのバリデートが動いてないようです。
アプローチが違うのでしょうか??
CakePHP V2.7.3
Controllerフォルダ
TasksController.php
Modelフォルダ
Task.php
Viewフォルダ
index.ctp
テーブル構成
taskテーブル
id,title,url,category,created,modifed
Controller TasksController.php
php
1<?php 2App::import('Vendor', 'simple_html_dom'); 3App::import('Vendor', 'pathreplace_class'); 4class TasksController extends AppController { 5 6 public $helpers = array('Html', 'Form'); 7 8 9 public function index() { 10 $site_url='http://www.localhost'; 11 $html = file_get_html( 'http://xxxxxxxxx' ); 12 13 //スクレイピング実行取得 14 foreach($html->find('table.prof') as $entry){ 15 $title = $entry->find('p.work_title a',0)->plaintext; 16 $user_url = $entry->find('p.work_title a',0)->href; 17 $price = $entry->find('p.red',0)->plaintext; 18 $category=$entry->find('p.category a',0)->plaintext; 19 20 //URL結合 21 $url=$site_url.$user_url; 22 23 //主キー【ID】がアップデートにならないようにする。 24 $this->Task->create(); 25 26 //データ登録 27 $data = Array('Task' =>array( 28 "title" => $title, 29 "url" => $url, 30 "price"=>$price, 31 "category" => $category 32 )); 33 34 // 登録するフィールド 35 $fields = array('title', 'url' ,'price' ,'category'); 36 37 38 $this-> Task -> save($data, false, $fields); 39 } 40 } 41} 42
Model Task.php
php
1 2class Task extends AppModel { 3 //入力チェック機能 4 public $validate = array ( 5 'url' => array ( 6 'rule' => 'isUnique' 7 ), 8 ); 9}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/26 02:33