【问题标题】:Add to Playlist Eloquent - Laravel添加到播放列表 Eloquent - Laravel
【发布时间】:2019-05-02 20:49:25
【问题描述】:

我正在为我的鸡尾酒应用程序创建一个“添加到播放列表”功能。用户将能够将鸡尾酒添加到播放列表。这是多对多的关系。

鸡尾酒.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class cocktail extends Model
{
    protected $primaryKey = 'idDrink';
    protected $fillable = ['strDrink', 'strCategory', 'strGlass', 'strInstructions', 'strIngredient1'];

    public function playlist()
    {
        return $this->belongsTo(Playlist::class);
    }

    public function favourite()
    {
        return $this->hasMany(Favourite::class); 
    } 

}

播放列表.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class playlist extends Model
{
    protected $fillable = ['name', 'description'];

    public function cocktails()
    {
        return $this->hasMany(Cocktail::class);
    }
}

我在鸡尾酒上有一个“添加到播放列表”按钮,名称为 {{ $cocktail-idDrink }}。当用户单击该按钮时,会弹出一个模式,其中包含可用播放列表的列表,这些列表也与 {{ $playlist->id }} 的名称链接。我正在尝试将这两个连接起来,因此当单击播放列表按钮时,鸡尾酒会添加到该播放列表中。

我知道我需要某种形式的“添加到播放列表”按钮,但不知道如何实现。当我向按钮添加表单时,我收到“无消息”错误。

添加到播放列表按钮

<button type="submit" href="#" class="primary-btn add-btn" name="{{ $cocktail->idDrink }}" data-toggle="modal" data-target="#exampleModalCenter"><i class="fas fa-plus"></i>Add to Playlist</button>

模态播放列表按钮

@foreach($playlists as $playlist)
  <div class="modal-body">
    <a name="{{ $playlist->id }}" href="#">{{ $playlist->name }}</a>
  </div>
@endforeach

Playlist Modal Image

Add to Playlist Button Image

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    我不知道这是否正确,但我认为最好的解决方案是处理所述关系,鸡尾酒属于播放列表。因此,您需要将鸡尾酒添加到播放列表中。所以可能会有这样的流程:

    • 所有播放列表的列表,每个播放列表都带有添加鸡尾酒按钮
    • 然后点击添加鸡尾酒,在此处显示您的弹出模式,它将获取所有鸡尾酒,
    • 您可以在此处使用 select2,或者如果您使用的是 vuetify,请使用启用了多个 prop 的 v-autocomplete 组件。
    • 之后,您将在点击保存时选择所有鸡尾酒添加到您的播放列表中,然后附加所有选定的鸡尾酒。

    【讨论】:

    • 我认为你搞错了。我认为 OP 有一个鸡尾酒列表,并且想要点击一个按钮添加到一个播放列表,然后它将打开带有所有可用播放列表列表的模式。所以他的问题是知道点击了哪种鸡尾酒。
    【解决方案2】:

    您可以通过几种不同的方式来实现这一点,大多数人可能会使用 AJAX 请求。但是,可以通过执行以下操作来使用表单来完成:-

    @foreach($cocktails as $cocktail)
    <a class="primary-btn add-btn" href='#' data-toggle="modal" data-target="#cocktail-{{ $cocktail->id }}">i class="fas fa-plus"></i>Add to Playlist</a> 
    <div class="modal" id="cocktail-{{ $cocktail->id }}">
        <div class="modal-body">
        <form action="/your-route" method="POST">
            @csrf
            <input type='hidden' name='cocktail' value='{{ $cocktail->id }}'>
            @foreach($playlists as $playlist)
                <label >
                <input type="radio" name="playlist" value="{{ $playlist->id }}">
                {{ $playlist->name }}
                </label>
            @endforeach 
            <button type="submit" class="primary-btn">Add To Playlist</button>
        </form                                
        </div>
    </div>
    @endforeach
    

    这种方法会为每个鸡尾酒创建一个模态,或者您也可以通过使用一些 JS 更新隐藏的 cocktail 字段的值来使用单个模态来完成。

    希望这会给你一个关于如何做的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2019-12-23
      • 2018-03-10
      相关资源
      最近更新 更多