Laravel一对多关系加入结果

时间:2018-10-11 16:13:28

标签: laravel laravel-5 eloquent

我有点迷失了这个,我真的找不到问题,我一直在网上看很多问题,但似乎仍然无法正常工作。

我有两个表,tabelaAngaricao表和tabelaFotos表具有一对多的关系,这意味着tabelaAngariacao可以有许多tabelaFotos,并且tabelaFotos作为angariacaoid(外键),所以我的tabelaAngariacao模型是: / p>

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\TabelaFotos;

class TabelaAngariacao extends Model
{
    protected $table = 'tabelaAngariacao'; 
    public function TabelaFotos()
    {
        return $this->hasMany(TabelaFotos::class, 'angariacaoid');
    }
}

我的tabelaFotos模型是:

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\TabelaAngariacao;

class TabelaFotos extends Model
{
    protected $table = 'tabelaFotos'; 

    public function TabelaAngariacao()
    {
        return $this->belongsTo('App\TabelaAngariacao');
    }
}

我想要的是使所有结果均与angariacaoid结合,因此在我的控制器中,我有:

public function index()
    {

        $results = DB::table('tabelaAngariacao')
            ->leftJoin('tabelaFotos', 'tabelaAngariacao.id', '=', 'tabelaFotos.angariacaoid')
            ->select('tabelaAngariacao.*')
            ->get();

    }

有人可以帮助我找到问题吗?我在做什么错了?

2 个答案:

答案 0 :(得分:4)

您不需要添加select。尝试关注

$results = DB::table('tabelaAngariacao')
->leftJoin('tabelaFotos', 'tabelaAngariacao.id', '=', 'tabelaFotos.angariacaoid')
->get();

上面的脚本将为您提供两个表中的列。

答案 1 :(得分:1)

也许您不需要使用DB::table,而是可以使用口才查询,因为您已经定义了关系

您可以尝试执行此操作。

$results = TabelaFotos::with('TabelaAngariacao')->get();

这是它的工作方式

$results = ModelName::with('relationship_in_model_name')->get();

希望它能起作用