я работаю над банковским приложением, в моей модели Laravel у меня есть таблица с транзакциями.
В этой таблице есть столбец с именем to_id и from_id, который является идентификатором пользователя, отправляющего деньги (from_id), и идентификатором получателя денег (to_id), который связан с моей таблицей пользователей,
вот код миграции CreateTransactionsTable
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();
});
вот код файла миграции CreateUserTable
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();
});
Вот код модели транзакций
class Transactions extends Model{
public function users(){
return $this->belongsTo('App\Users');
}
}
Вот код для модели пользователей
<?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');
}
}
вот мой код контроллера
public function Transactions(){
$Trans = Transactions::all();
return view('Admin.TranAdmin')->with(['title'=>'Transaction History ', 'Trans'=>$Trans]);
}
вот мой код TranAdmin.blade.php
<?php $no = 1; ?>
@foreach ($Trans as $Tran)
<tr>
<td>{{ $no++ }}</td>
<td>{{ $Tran->to_id }}</td>
<td>{{ $Tran->from_id->name }}</td>
<td>{{ $Tran->status }}</td>
<td>{{ $Tran->created_at->format('F jS, Y')}}</td>
<td></td>
</tr>
@endforeach
Моя проблема сейчас в том, что я не могу получить имя человека, который отправил $Tran->from_id и получил $Tran->to_id деньги
я получаю эту ошибку
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)
я проверил онлайн, но я увидел, что нужно сделать $Tran->User->name, но поскольку у меня есть два столбца, которые связаны с таблицей пользователей, как я могу это сделать
как, не понимаю






вам нужно будет определить еще 2 отношения в модели транзакции.
как ниже
на данный момент вы пытаетесь получить доступ к свойствам отношения из атрибутов модели (например: когда вы делаете это$Trans->from_id, вы просто получаете данные, а не отношение.) скорее вам нужно получить доступ к отношению, определив их сначала в модели, а затем вызывайте ее свойства.
class Transactions extends Model{
public function from(){
return $this->belongsTo('App\Users','from_id', 'id');
}
public function to(){
return $this->belongsTo('App\Users', 'to_id', 'id');
}
//maybe you dont need the user relationship at all
}
а затем в шаблоне вы используете его следующим образом
$transaction->to->name;
$transaction->from->name;
Разве вам не нужно
get()на модели, прежде чем вы сможете использовать ее в представлении?