[英]Laravel : How to retrieve information from another table using a pivot table?
[英]Fetching something from a table using information from another table
这是针对房地产网站的-它们显示了存储在数据库中的数千个广告-遗憾的是,照片和广告存储在数据库的两个不同表中。 有关属性的信息位于称为属性的表下-图像存储在名为propertyImages
的表中-它们的共同点是其propspaceId
这就是它们如何链接的方式。
某些属性包含一张以上的图片-假设一个包含四张照片的广告在该广告中具有一个唯一的propspaceID
(在属性表中)-但是在propertyImages表中属于该广告的照片具有该ID的所有照片放那个广告。
基本上,所有广告都有排名号码。 这个排名数字由不同的因素组成,我已经能够完成这项工作。 但是,其中一个因素是每个广告的图片数量-旧的程序员编写了以下代码:
$property['totalImages'] = mysql_num_rows(mysql_query("SELECT * FROM `propertyImages` WHERE propspaceId=".$property['propspaceId']));
我似乎无法理解这一点,或者写一个新的。 此代码无效。 然后,在随后的代码中,当我编写条件时,我编写了这样的内容。
switch($property['totalImages']){
case $property['totalImages'] >= 1 :
$rank+=100;
break;
}
..等等。
第二个代码不是问题。 我需要找到一种方法来获取具有匹配propspaceId
( s
)的propertyImages
表中的照片数量,然后例如,如果propspaceId = 45666
有4个重复出现的值,我希望该变量为4。
第二个代码就是问题所在。 您需要将其转换为if
或执行以下操作:
switch(true) {
case ($property['totalImages'] >= 1):
$rank += 100;
break;
}
在您的switch
您将$property['totalImages']
的整数值与$property['totalImages'] >= 1
的布尔结果进行比较。
要使用if
,例如:
if($property['totalImages'] >= 1) {
$rank += 100;
}
elseif($property['totalImages'] == 0) {
//rank = something else
}
//other stuff, you didn't show more than 1 condition
尝试这个:
select count(*) as number_photos from propertyImages where propspaceId = ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.