我正在尋找一種解決方案,該解決方案將撤回用於匹配來自不同表格的其他數據的基本數據。然後我想以表格的形式在刀片中顯示這些數據。如何匹配來自兩個不同數據庫表的數據並將其顯示
在數據庫中,我有一個「匹配」實體,存儲用戶的憑證,我想用它來匹配(例如產品的期望價格)。實體包含「peopleID」作爲「匹配」屬於網站用戶。當用戶被創建時,我們分配匹配選項,這些選項被存儲在該「匹配」實體內。匹配實體內部的行數取決於在用戶創建階段選擇的縣的數量。
我知道要從數據庫中提取匹配數據我需要使用foreach循環。
我的問題是當我在刀片內輸出數據。出於某種原因,它僅將產品與數組中的最後一項匹配。它應該將產品與所有匹配的憑證相匹配。
代碼:
$matchings = Match::where('PeopleID', '=', $id)->get();
$sales = DB::table('sales');
foreach ($matchings as $matching)
{
$county = $matching->county;
$sales->where('county', '=', $county);
}
$results = $sales->get();
所以對於客戶之一,我有兩個匹配數不同的「縣」。它只顯示添加的最後一個數據。我怎麼能讓它顯示其他匹配的數據,其中包含不同的縣。我希望你明白我的意思。
感謝您的任何幫助。
更新 - 大部分代碼已完成。感謝您的幫助。
第二個問題是關於添加其餘的匹配選項。如前所述,比賽的數量取決於所添加的縣的數量。每場比賽都有自己的屬性。這個想法是顯示每個縣的匹配結果。
我知道我需要一些if語句來做到這一點。
這裏就是我想實現一個例子:
$maxprice = $match->maxprice;
$minprice = $match->minprice;
$brand_a = $match->brand_a;
$brand_b = $match->brand_b;
if($maxprice != '0')
{
$sales = DB::table('sales')->where('maxprice', '<=', $maxprice);
}
if($minprice != '0')
{
$sales = DB::table('sales')->where('minprice', '>=', $minprice);
}
if($brand_a == '1')
{
$sales = DB::table('sales')->where('brand_a', '1');
}
if($brand_b == '1')
{
$sales = DB::table('sales')->where('brand_b', '1');
}
要將此代碼:
$user = User::find($id); // get our User with the Id (person id?)
$matches = $user->matches; // get all the matches
// or you could one line the above: $matches = User::find($id)->matches;
// get all the counties in the returned matches, could use pluck() method in higher version of laravel
$counties = [];
foreach($matches as $match) {
$counties[] = $match->county;
}
$results = DB::table('sales')->whereIn('county', $counties)->get();
非常感謝您的幫助!
@Update
關係:
比賽:
public function people()
{
return $this->belongsTo('People', 'PeopleID', 'PeopleID');
}
人:
public function matches()
{
return $this->hasMany('Match', 'PeopleID', 'PeopleID');
}
我有那些之間的連接,匹配持有人的 「搜索」 證書。您所提供的第一個解決方案非常完美。現在,這個解決方案過濾了縣的銷售情況,這是一個很好的舉措,因爲它們需要按照最低和最高價格(minprice,maxprice)和其他憑據(如brand_a和brand_b)進行過濾。
brand_a和brand_b的想法: 複選框負責改變Matching中的brand_a和brand_b值。如果這些被選中,匹配實體中的值變爲'1'。如果這些未被檢查,它們將變爲'0',這意味着銷售不必被這些值過濾掉。
銷售實體包含「Holdings」屬性。 「控股」的價值可以是brand_a或brand_b。銷售還包含「價格」。
因此,要明確這一點:
銷售實體包含:SaleID,價錢,控股,縣。
持有價值:brand_a或brand_b。 價格只是一個數字。 縣是純文本。
匹配實體包含:PeopleID,MinimumPrice,MaximumPrice,brand_a,brand_b,county。
PeopleID是一個外鍵。我們需要知道哪個匹配屬於哪個用戶。 (根據所選縣的數量,一個用戶可以有多個匹配項)。 MinimumPrice和MaximumPrice是數字。 brand_a和brand_b是值(1或0),具體取決於是否選中了複選框。 縣是縣的名字。
現在,如果人1543(peopleID = 1543)包含3個匹配項,每個匹配項都包含不同的搜索憑證。
第一: 的peopleid:1543 MinimumPrice:1000 MaximumPrice:7000 brand_a:0 brand_b:1 縣:county_a
第二: 的peopleid:1543 MinimumPrice:2500 MaximumPrice:10000 brand_a :1 brand_b:1 county:county_f
3rd: PeopleID:1543 MiniumPrice:2000 MaximumPrice:9500 brand_a:0 brand_b:0 縣:county_d
我需要這個數據針對的是銷售中的數據相匹配。可以有超過1000種不同的價格等不同的銷售額。我只需要對它們進行過濾並根據個人的匹配顯示人員所需的銷售額。
我希望這能更好地呈現你的情況。謝謝。
通過雄辯或數據庫門面? – C2486
@Rishi無論什麼情況下都能更好地工作。謝謝。 –
您使用4.2嗎? – haakym