2014-07-03 55 views
-2

我有一個使用原生PHP編寫的舊應用程序。現在我想實現使用Laravel 4新功能......,我失去了.. 我首先要做的是讓從這個SELECT語句的結果到一個頁面:如何使用Laravel模型訪問現有的數據庫表?

$sql = "SELECT item.item_id, reg_number, serial_1, serial_2, serial_3, item_type, item_material, item_loc, addit_info.* 
       FROM items 
       JOIN addit_info on items.item_id = addit_info.item_id 
       WHERE items.status = 's' 
       ORDER BY status_changed DESC LIMIT 0 , 100;"; 

的模式這些表是:

CREATE TABLE IF NOT EXISTS項目( ITEM_ID int(10) unsigned NOT NULL AUTO_INCREMENT, reg_number char(9) COLLATE utf8_unicode_ci NOT NULL, reg_type char(1) COLLATE utf8_unicode_ci NOT NULL, make_id tinyint(3) unsigned NOT NULL, 模型varchar(20) COLLATE utf8_unicode_ci NOT NULL, main_color varchar(20) COLLATE utf8_unicode_ci NOT NULL, other_color varchar(20) COLLATE utf8_unicode_ci NOT NULL, serial_1 varchar(25) COLLATE utf8_unicode_ci NOT NULL, serial_2 varchar(25) COLLATE utf8_unicode_ci NOT NULL, serial_3 varchar(25) COLLATE utf8_unicode_ci NOT NULL, ITEM_TYPE char(1) COLLATE utf8_unicode_ci NOT NULL, char(1) COLLATE utf8_unicode_ci NOT NULL, item_material狀態char(1) COLLATE utf8_unicode_ci NOT NULL, status_changed timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, 價格float(6,2) unsigned NOT NULL, varchar(255) COLLATE utf8_unicode_ci NOT NULL, 描述item_loc varchar(15) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY ( ITEM_ID ), UNIQUE KEY reg_number ( reg_number )) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=476;

CREATE TABLE IF NOT EXISTS addit_infoitem_id INT(10)無符號NOT NULL, event_date1日期NOT NULL, event_from VARCHAR(250)COLLATE utf8_unicode_ci NOT NULL, more_info VARCHAR(255)COLLATE utf8_unicode_ci NOT NULL, event_date2 date NOT NULL, PRIMARY KEY(item_idevent_date1) )ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

我不知道我的模型應該是什麼樣子。我想我將無法使用Eloquent功能,而是必須使用查詢構建器編寫查詢。但是,我仍然不知道在哪裏放置我的查詢。它應該在模型中處理我想要使用的所有查詢嗎?

回答

2

您似乎在同一時間要求2件事,但我將集中討論標題爲「如何使用Laravel模型訪問現有數據庫表」的問題。

我敢肯定你可以使用Eloquent與你的舊數據庫結構。關於雄辯的三個重要的事情在這種情況下:

  1. 雄辯會以複數型號名稱,以及蛇情況下,得到表名(型號名稱應罰款這一個)。
  2. Eloquent默認爲id列作爲主鍵。需要更改爲item_id
  3. $timestamps默認啓用,這意味着它會嘗試查找created_atupdated_at列。我們需要禁用它。

所以,你需要重寫#2和上述第3點,讓您的口才模式工作,試試這個:

型號/項目。PHP:

class Item extends Eloquent 
{ 
    protected $table = 'items'; 
    protected $primaryKey = 'item_id'; 
    public $timestamps = false; 

    // ... 
} 

至於你的第二個(隱藏的問題),你應該能夠查找Laravel文檔找出如何做joinsrelationship容易。

相關問題