Laravel 5.5:将查询构建器转换为eloquent

时间:2017-10-20 11:23:25

标签: php laravel laravel-eloquent laravel-5.5 laravel-query-builder

有没有办法将此查询构建器转换为eloquent?

$transactions = DB::table('transactions')
    ->join('accounts', 'transactions.account_id', '=', 'accounts.id')
    ->select('transactions.*', 'accounts.name as account_name')
    ->paginate(5);

我尝试了一对多。但它需要find()函数,所以它给我一个帐户的交易,但我需要选择所有与accounts.name

的交易

2 个答案:

答案 0 :(得分:1)

在评论中,你说你有一对多的关系定义(我假设它的账户有很多交易)你需要用账户名来获得所有交易,所以这样做:

Transaction::with('account')->paginate(5);

其中account是关系:

public function account()
{
    return $this->belongsTo(Account::class);
}

然后您将能够显示如下数据:

@foreach ($transactions as $transaction)
    {{ $transaction->id }}
    {{ $transaction->account->name }}
@endforeach

答案 1 :(得分:0)

你需要使用模型来做到这一点。

  1. 交易模型和帐户模型。

  2. 定义他们的关系

  3. 在事务模型中创建一个方法以检索相关的帐户名。

    function accoutNames(){// blablabla}

  4. 在控制器中执行查询,类似:

    交易 - > accountNames();