以下链接与我的问题相关:
Eloquent Left Join, getting unexpected result
这是我的表格结构,只是为了概述。
选项:
活动元素:
嗯,这确实是同样的问题,但我认为这是因为Eloquent。当我尝试使用PDO查询链接上的问题时。它仍然是一样的。
$query = $db->prepare(
" SELECT * FROM event_meta a
LEFT JOIN options b ON b.id = a.meta_value
WHERE a.meta_key = 'logo'
"); $query->execute();
$object = $query->fetchObject();
echo $object->value, '<br>';
echo $object->meta_value;
所以我做的是,我有一个名为event_meta
的表,并尝试加入options
表来连接它们我使用b.id
而event_meta
是{{} 1}}
我想要发生的事情是首先检索a.meta_value
以检查它是否为空。如果它是空的,我将获得options.value
的值来输出它。
例如,在我上面的查询中,我想获得event_meta.meta_value
所谓的徽标。它应该获得图像名称的输出。但由于我已连接到meta_key
表,因此应该获得options
。输出options.value
时,它应为空白。由于徽标的options.value
不等于任何meta_value
。但它正在检索options.id
值。
答案 0 :(得分:1)
您的“充值”options.id
值为6. event_meta.meta_value
中您的(可能是二进制图片)徽标值的数值为6,因为它以“6b3b .....”开头。这就是他们比较平等的原因。
将数字字段与字符字段进行比较时,MySQL将获取字符字段的数值并将其与数字进行比较。您可能缺少的是MySQL中的字符字段“123abc3478uweefauiofyh3489h”的数值为123.
将您的数字options.id
字段转换为与您的JOIN中event_meta.meta_value
相同的类型。
答案 1 :(得分:0)
使用此功能:
$query = $db->prepare(
"SELECT *
FROM options
LEFT OUTER JOIN event_meta
ON options.id=event_meta.meta_value
WHERE event_meta.meta_key= 'event_package';");