2016-07-04 123 views
-1

我必須檢查一個用戶是否在線(遊戲中),如果他不是,那麼再做一次執行sql更新的檢查。Laravel 5.2聯合/加入數據庫和Eloquent的模型查詢

其實,我有這兩個查詢。

$isOnline = DB::connection('mssql')->table('USER_STAT')->where('user_id', $userID)->value('ConnectionStat'); 
$character = Character::where('acc_id', $userID)->where('Name', $characterName)->firstOrFail(); 

有沒有一種方法,我可以爲了節省一個數據庫查詢中使用unionjoin?我相信這不是一個好的做法,有一些更好的方法,在文檔中我找不到。

我想這樣的事情,但沒有成功:

$character = Character::where('acc_id', $userID)->where('Name', $characterName)->firstOrFail(); 
$result = DB::connection('mssql')->table('USER_STAT')->where('user_id', $userID)->union($character)->get(); 

提前感謝!

+0

你們是不是要更新'ConnectionStat'? –

+0

@chasenyc不,我只需要知道他是否在線... ConnectionStat應該返回0(離線)或1(在線)。 – Frondor

回答

1

在字符模型中使用一個關係到USER_STAT表的模型中,您可以輕鬆查找需要確定是否需要更新某處的更新。

Eloquent Relationships

這並不鞏固查詢爲一體,就像一個加盟,但他們不重反正,並使用ORM最充分地將在長遠來看更爲顯著的優勢。

如果你覺得你必須使用一個SQL聯接必須堅持QueryBuilder的,但通常ORM是更好的選擇

Query Builder Joins

+0

謝謝!我是新手,所以我也遇到了模型方面的問題...您是否告訴我應該創建一個'ConnectStatModel.php'並將其附加到用戶模型?考慮到數據庫結構,我應該使用哪種關係? – Frondor

+1

我會製作一個UserStat模型,並在字符模型中建立與該關係 'public function stat() { return $ this-> hasMany('UserStat','user_id','acc_id'); }' 如果ACC_ID在人物模型設置爲$ PrimaryKey的你可以離開了這一點 與關係得到您的$字符加載 和訪問所有相關的統計數據很容易 '$字符=字::與('STAT '') - > where('acc_id',$ userID) - > where('Name',$ characterName) - > firstOrFail(); $ isOnline = $ character-> stat-> ConnectionStat;' – CommonToast