如何在拉拉维尔中连接两个表?

我是Laravel的新手。我在连接两个表(用户表和事务表)时遇到了困难。以下是来自 TransactionController 的代码。


public function index()

{

    $user = User::all();

    $transactions = $user->transactions;

    $transaction = array();


    foreach ($transactions as $row) {

        array_push($transaction,

        [

            'id' => $row->id,

            'name' => $row->user->name,

        ]

        );

    }


    return response() -> json ([

        'transaction' => $transaction,

    ]);

}

我想在邮递员中打印所有用户的姓名和所有交易。我设法打印所有用户的姓名,但当我尝试加入事务表时,我遇到了错误。我已经尝试了左连接方法,如下所示:


$user = User::all() 

  ->select('user.id','user.name')

  ->join('transactions','transactions.id','=','user.id')

  ->get();


  foreach ($transactions as $row) {

        array_push($transaction,

        [

            'id' => $row->id,

            'name' => $row->user->name,

        ]

        );

    }


    return response() -> json ([

        'transaction' => $transaction,

    ]);

}

有没有办法在laravel中连接两个表?谢谢。


宝慕林4294392
浏览 124回答 1
1回答

梦里花落0921

假设您在用户模型中具有此关系。public function transactions() {  return $this->hasMany('App\Transaction', 'user_id');}在您的交易模型中public function user() {  return $this->belongsTo('App\User', 'user_id');}现在,将用户与他们的交易一起获取$users = User::with('transactions')->get();如果要获取与用户内联的事务 $data = Transaction::with('user')->get(); $transactions = collect($data)->map(function ($transaction){    return [        'id' => $transaction->id,        'name' => $transaction->user->name,        'total' => $transaction->total,    ];});
打开App,查看更多内容
随时随地看视频慕课网APP