2

Laravel 4 を使用してアプリケーションの問題を修正しようとしています。問題は、Eloquent と M:M の関係に関するものです。

これが私の状況です。多くのサービスを選択できる多くのユーザーがいて、サービスごとに専用の価格を提供できます。データベースには、「services」、「users」、および「users_services」という名前のテーブルがあります。したがって、現時点では、すべてのユーザーが選択するサービスと価格を保存できますが、それらを取得してユーザーに表示する方法がわからないという問題があります。つまり、「チェック済み」を設定する方法がわからないということです。選択したすべてのサービスのチェックボックスとそれぞれの価格にも。

任意のフォークについては、Paste Laravelでコードを確認できます。ここにも貼ります。

    <?php

class Service extends Eloquent {

    public static $rules = array();

    protected $guarded = array('id');

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'services';

    /**
     * -------------------------------------
     * All Joins w/ other tables
     * -------------------------------------
     **/
    public function users()
    {
        return $this->belongsToMany('User','users_services','services_id','user_id');
    }
}

......

<?php

class User extends Eloquent {

    public static $rules = array();

    protected $guarded = array('id');

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * -------------------------------------
     * All Joins w/ other tables
     * -------------------------------------
     **/
    public function services()
        {
            return $this->belongsToMany('Service','users_services','user_id','service_id');
        }       
}

................

// Inside the controller 

$services = Service::all();
$this->layout->content = View::make('private.user.services')->with(compact('services'));

...............

// The view
@foreach($services as $service)
 <div class="pull-left col-lg-6 service-container">
  <div class="checkbox pull-left">
   <label>
    <input type="checkbox" name="services[]" value="{{ $service->id }}"><span>{{ $service->name }}</span>
   </label>
  </div>
  <div class="input-group service-price pull-right">
  <input type="number" min="0" name="prices[{{$service->id}}]" class="form-control pull-rigth" placeholder="0">
   <span class="input-group-btn">
    <button class="btn btn-default" type="button" disabled><i class="icon-eur"></i></button>
   </span>
  </div>
 </div>
@endforeach
4

3 に答える 3

0

msturdyの答えは非常に素晴らしいですが、チェックボックスの場合、「選択」ではなく「チェック」を入れます。それ以外は、うまく機能します。ありがとう!

于 2014-12-15T18:41:14.760 に答える