当我有不同的外键时如何从数据库中查询?
How to query from database when I have different foreign keys?
我正在尝试从我的数据库中查询数据并将结果传递给一个名为 events
的视图,我遇到的问题是我的一个查询总是 return 相同的结果,因为在where
条件 $events_id
始终相同。有没有更好的方法来进行查询?更好的逻辑?
此代码来自我的名为 EventController
的控制器:
public function index()
{
$firm_id = DB::table('firms')->where('user_id', auth()->id())->value('id');
$events_id = DB::table('events')->where('firm_id', $firm_id)->value('id');
$events = DB::table('events')->where('firm_id', $firm_id)->get()->toArray();
$actual_events = DB::table('actual_events')->where('event_id', $events_id)->get()->toArray();
return view('events',['events' => $events,'actual_events' => $actual_events]);
}
由于 $events_id
每次都相同,因此 $actual_events
将只包含第一个结果。
我上传的图片显示了问题,我的 table 的前三列没问题。从第四个开始,它们包含重复值:
你刚才说你们的table有关系。
在这种情况下,最好使用 eloquent,
首先你应该在模型中输入每个 table 的关系,如下所示:
class User extends Authenticatable{
public function cities()
{
return $this->hasmany('App\City'); //you should type your relation
}
}
对于关系,您可以使用此 link:laravel relationships
之后,当您将 $user
变量压缩到您的视图时,您可以使用此语法获取与该用户的城市值关系:$user->cities;
.
我猜你需要这样的东西:
$event_ids = DB::table('events')->where('firm_id', $firm_id)->pluck('id');
$actual_events = DB::table('actual_events')->whereIn('event_id', $event_ids)->get()->toArray();
或者详细写下你的问题,我会尽力帮助你。
我正在尝试从我的数据库中查询数据并将结果传递给一个名为 events
的视图,我遇到的问题是我的一个查询总是 return 相同的结果,因为在where
条件 $events_id
始终相同。有没有更好的方法来进行查询?更好的逻辑?
此代码来自我的名为 EventController
的控制器:
public function index()
{
$firm_id = DB::table('firms')->where('user_id', auth()->id())->value('id');
$events_id = DB::table('events')->where('firm_id', $firm_id)->value('id');
$events = DB::table('events')->where('firm_id', $firm_id)->get()->toArray();
$actual_events = DB::table('actual_events')->where('event_id', $events_id)->get()->toArray();
return view('events',['events' => $events,'actual_events' => $actual_events]);
}
由于 $events_id
每次都相同,因此 $actual_events
将只包含第一个结果。
我上传的图片显示了问题,我的 table 的前三列没问题。从第四个开始,它们包含重复值:
你刚才说你们的table有关系。 在这种情况下,最好使用 eloquent, 首先你应该在模型中输入每个 table 的关系,如下所示:
class User extends Authenticatable{
public function cities()
{
return $this->hasmany('App\City'); //you should type your relation
}
}
对于关系,您可以使用此 link:laravel relationships
之后,当您将 $user
变量压缩到您的视图时,您可以使用此语法获取与该用户的城市值关系:$user->cities;
.
我猜你需要这样的东西:
$event_ids = DB::table('events')->where('firm_id', $firm_id)->pluck('id');
$actual_events = DB::table('actual_events')->whereIn('event_id', $event_ids)->get()->toArray();
或者详细写下你的问题,我会尽力帮助你。