根据条件合并两个查询结果
Merging two query result based on condition
我有两个查询 results.I 需要根据条件合并查询结果。
$portfolio = DB::table('architects_portfolio')->get();
$img=DB::table('architects_portfolio_images')
->distinct()->get(['architects_images_id']);
我的合并条件是
architects_portfolio.id = architects_portfolio_images.architects_images_id
我的第一个 table 'architects_portfolio' 包含投资组合,第二个 table 'architects_portfolio_images' 包含 portfolio.I 的图像,只需要获取一张图像now.But 我现在通过使用下面的方法得到所有投资组合的图像 code.But 我只需要一个
$architect = User::find($user_id)->architect;
$portfolio = ArchitectsPortfolio::join('architects_portfolio_images as images', 'architects_portfolio.id', '=', 'images.architects_images_id')
->where('architects_portfolio.architects_id', $architect->id)
->select('architects_portfolio.id', 'architects_portfolio.architects_id', 'architects_portfolio.name', 'architects_portfolio.description', 'images.filename','images.architects_images_id')
->distinct()->get(['images.architects_images_id']);
我的table
architects_potfolio
architects_portfolio_images
$querys = DB::table('architects_portfolio');
$querys->select('architects_portfolio_images.architects_images_id');
$querys->join('architects_portfolio','architects_portfolio.id','=','architects_portfolio_images.architects_images_id')->distinct()->get();
你应该试试这个:
$rsltArchitectDetails = DB::table('architects_portfolio')
->select('architects_portfolio_images.architects_images_id')
->join('architects_portfolio_images', 'architects_portfolio.id' , '=', 'architects_portfolio_images.architects_images_id')
->distinct()
->get();
最好的方法是使用 relationships,然后您可以只加载包含相关图片的作品集:
$portfolios = ArhitectPortfolio::with('images')->get();
要让它工作,你只需要在ArhitectPortfolio
模型中定义images
关系:
public function images()
{
return $this->hasMany(ArchitectPortfolioImage::class, 'architects_images_id');
}
我们可以使用以下代码代替合并
$data = Architect::where("user_id", $user_id)->first();
$architect = User::find($user_id)->architect;
$portfolio = ArchitectsPortfolio::where('architects_portfolio.architects_id', $architect->id)->paginate(6);
foreach ($portfolio as $r) {
$image = ArchitectsPortfolioImages::where('architects_images_id', $r->id)->first();
if ($image) {
$r->filename = $image->filename;
}
}
我有两个查询 results.I 需要根据条件合并查询结果。
$portfolio = DB::table('architects_portfolio')->get();
$img=DB::table('architects_portfolio_images')
->distinct()->get(['architects_images_id']);
我的合并条件是
architects_portfolio.id = architects_portfolio_images.architects_images_id
我的第一个 table 'architects_portfolio' 包含投资组合,第二个 table 'architects_portfolio_images' 包含 portfolio.I 的图像,只需要获取一张图像now.But 我现在通过使用下面的方法得到所有投资组合的图像 code.But 我只需要一个
$architect = User::find($user_id)->architect;
$portfolio = ArchitectsPortfolio::join('architects_portfolio_images as images', 'architects_portfolio.id', '=', 'images.architects_images_id')
->where('architects_portfolio.architects_id', $architect->id)
->select('architects_portfolio.id', 'architects_portfolio.architects_id', 'architects_portfolio.name', 'architects_portfolio.description', 'images.filename','images.architects_images_id')
->distinct()->get(['images.architects_images_id']);
我的table architects_potfolio
architects_portfolio_images
$querys = DB::table('architects_portfolio');
$querys->select('architects_portfolio_images.architects_images_id');
$querys->join('architects_portfolio','architects_portfolio.id','=','architects_portfolio_images.architects_images_id')->distinct()->get();
你应该试试这个:
$rsltArchitectDetails = DB::table('architects_portfolio')
->select('architects_portfolio_images.architects_images_id')
->join('architects_portfolio_images', 'architects_portfolio.id' , '=', 'architects_portfolio_images.architects_images_id')
->distinct()
->get();
最好的方法是使用 relationships,然后您可以只加载包含相关图片的作品集:
$portfolios = ArhitectPortfolio::with('images')->get();
要让它工作,你只需要在ArhitectPortfolio
模型中定义images
关系:
public function images()
{
return $this->hasMany(ArchitectPortfolioImage::class, 'architects_images_id');
}
我们可以使用以下代码代替合并
$data = Architect::where("user_id", $user_id)->first();
$architect = User::find($user_id)->architect;
$portfolio = ArchitectsPortfolio::where('architects_portfolio.architects_id', $architect->id)->paginate(6);
foreach ($portfolio as $r) {
$image = ArchitectsPortfolioImages::where('architects_images_id', $r->id)->first();
if ($image) {
$r->filename = $image->filename;
}
}