#php #laravel #many-to-many #laravel-5.8 #laravel-relations
Вопрос:
У меня есть Много-много отношений между Моделью пользователя и моделью Кошелька:
Wallet.php
:
public function users()
{
return $this->belongsToMany(User::class);
}
И User.php
:
public function wallets()
{
return $this->belongsToMany(Wallet::class);
}
И у меня есть эти три таблицы, связанные с кошельками:
Стол wallets
:
public function up()
{
Schema::create('wallets', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->string('name')->unique();
$table->tinyInteger('is_active');
$table->tinyInteger('is_cachable');
$table->timestamps();
});
}
Стол user_wallet
:
public function up()
{
Schema::create('user_wallet', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('usr_id')->on('users');
$table->unsignedBigInteger('wallet_id');
$table->foreign('wallet_id')->references('id')->on('wallets');
$table->integer('balance');
$table->timestamps();
});
}
И стол user_wallet_transactions
:
public function up()
{
Schema::create('user_wallet_transactions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('usr_id')->on('users');
$table->unsignedBigInteger('wallet_id');
$table->foreign('wallet_id')->references('id')->on('wallets');
$table->string('amount');
$table->string('description');
$table->timestamps();
});
}
Теперь мне нужно показать кошельки одного пользователя. Поэтому на users.index
Лезвии я добавил это:
<a href="{{ route('user.wallet', $user->usr_id) }}" class="fa fa-wallet text-dark"></a>
И отправьте пользовательские данные контроллеру вот так:
public function index(User $user)
{
// retrieve user_wallet information
return view('admin.wallets.user.index', compact(['user']));
}
Но я не знаю, как получить user_wallet
информацию этим методом.
Итак, как получить данные user_wallet
в этой ситуации.
Я был бы очень признателен за любую идею или предложение от вас, ребята, по этому поводу…
Заранее спасибо.
Ответ №1:
Один из способов-принять param
как $id
public function index($id)
затем
User::with('wallets')->has('wallets')->find($id);
Комментарии:
1. Итак, вы имеете в виду, что я должен удалить
User $user
как параметр этого метода?2. если вам нужны сведения как о пользователе, так и о кошельке, я думаю, это хорошо .или же вы можете сделать $wallet=$user->кошельки; это вернет сведения о кошельках отдельно. Возможно, есть другое решение, но я использую большую часть времени этот подход