我有兩個表名爲event_meta
和options
。
選項:
事件元:
我有一個名爲事件元表,其中存儲特定事件的子信息。現在我想要發生的是連接event_meta
和options
表使用leftjoin
雄辯。
這是我的代碼。
public function getMetaValue($key) {
$event_meta = $this->hasOne('Core\Event\EventMeta', 'event_id')
->leftjoin('options', 'options.id', '=', 'event_meta.meta_value')
->where('meta_key', '=', $key)
->first();
// If Option[table] value is empty, it will retrieve for Event Meta's[table] value, else It will return false.
return (empty($event_meta->value)) ? (empty($event_meta->meta_value)) ? false : $event_meta->meta_value : $event_meta->value;
}
現在的問題是..如果我檢索meta_key
標誌...
它檢索從選項表中的值稱爲Top Up
擁有的6
注意中的第一個字符徽標的meta_value
它在選項ID中具有相同的值。
我試圖改變6
到7
,該值的變化,它檢索選項的Vending POS
。
任何解決方案?這不應該發生。由於徽標的價值比選項的實際ID更長。
---編輯---
我試圖在等待幫助時修復它。
1日嘗試:
我嘗試這個解決方案貪圖它可能是固定的。仍然不起作用。
public function getMetaValue($key) {
$event_meta = $this->hasOne('Core\Event\EventMeta', 'event_id')
->leftjoin('options', function($query) {
$query->on('options.id', '=', 'event_meta.meta_value');
})->where('meta_key', '=', $key)
->first();
return (empty($event_meta->value)) ? (empty($event_meta->meta_value)) ? false : $event_meta->meta_value : $event_meta->value;
}