vendredi 12 avril 2019

How to link more than one forign key in laravel

am working on a banking app, in my Laravel Model, i have a table called transactions.

In that table it has a column called to_id and from_id which is the id of the user that is sending money(from_id) and the id of who is receiving the money(to_id) which is linked to my User table,

here is the CreateTransactionsTable migration code

    Schema::create('transactions', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('from_id')->unsigned();
        $table->foreign('from_id')->references('id')->on('users');
        $table->bigInteger('to_id')->unsigned();
        $table->foreign('to_id')->references('id')->on('users');
        $table->integer('Amount');
        $table->enum('TransactionType', ['Credit', 'Debit']);
        $table->enum('Status', ['Completed', 'Incomplete']);
        $table->timestamps();
    });

here is the CreateUserTable migration file code

Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');            
            $table->string('AccountNumber')->unique();
            $table->rememberToken();
        });

Here is the code for the Transactions Model

class Transactions extends Model{
    public function users(){
        return $this->belongsTo('App\Users');
    }
}

Here is the code for the Users Model

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password', 'Amount',
    ];

    public function transactions(){
        return $this->hasMany('App\Transactions');
    }
}

here's my controller code

public function Transactions(){
        $Trans = Transactions::all();
        return view('Admin.TranAdmin')->with(['title'=>'Transaction History ', 'Trans'=>$Trans]);
    }

here is my TranAdmin.blade.php code

<?php $no = 1; ?>
    @foreach ($Trans as $Tran)  
        <tr>
             <td></td>
             <td></td>
             <td></td>
             <td></td>
             <td></td>
             <td></td>
         </tr>
     @endforeach

My problem now is that i cant get the name of the person that sent $Tran->from_id and received $Tran->to_id the money

am getting this error

Trying to get property of non-object (View: C:\xampp\htdocs\laravel Projects\bank\iscbank\resources\views\Admin\TranAdmin.blade.php) (View: C:\xampp\htdocs\laravel Projects\bank\iscbank\resources\views\Admin\TranAdmin.blade.php)

i checked online but i saw was to do $Tran->User->name but since i got two columns that is linked to the users table, how can i do it



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire