Laravel таблица отношений - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в Laravel и работаю над отношениями. У меня есть телефонная книга, в которой есть клиент, поэтому, когда я вставляю данные, я добавляю в нее некоторый идентификатор клиента, как я могу получить имя клиента в представлении телефонной книги, когда я показываюсписок телефонных книг, я хочу получить объект клиента и показать имя с ним, как этот $ client-> title, и вот мой код, может быть, я не могу определить его словами :) это мой PhonebookController

public function index()
{

    $phonebooks = Phonebook::all();
    $client = Phonebook::find(?dont know if its right place for it?)->client;
    return view('admin.phonebooks.index',compact('phonebooks',$phonebooks),compact('client',$client));
}

а вот модель телефонной книги

class Phonebook extends Model{
protected $fillable = ['title','description','client_id','calldate','rememberdate'];
public function client() {
    return $this->hasOne('App\Client','id');
}    }

вот моя телефонная книга миграция БД

Schema::create('phonebooks', function (Blueprint $table) {
        $table->increments('id');
        $table->text('title');
        $table->longText('description');
        $table->integer('client_id');
        $table->dateTime('calldate');
        $table->dateTime('rememberdate');
        $table->timestamps();
    });

и клиентская миграция БД

 Schema::create('clients', function (Blueprint $table) {
        $table->increments('id');
        $table->text('title');
        $table->longText('description');
        $table->integer('fax');
        $table->text('adrress1');
        $table->integer('telephone1');
        $table->timestamps();
    });

и наконец вот представление

 @foreach($phonebooks as $phonebook)
    <tr>
        <th scope="row">{{$phonebook->id}}</th>
        <th scope="row">{{$phonebook->title}}</th>
        <td><a href="/admin/phonebooks/{{$phonebook->id}}">{{$phonebook->description}}</a></td>
        <td>{{$phonebook->calldate}}</td>
        <td>{{$phonebook->created_at->toFormattedDateString()}}</td>

        <td>{{$client->title}}</td>
        <td>
            <div class="btn-group" role="group" aria-label="Basic example">
                <a href="{{ URL::to('admin/phonebooks/' . $phonebook->id . '/edit') }}">
                    <button type="button" class="btn btn-warning">edit</button>
                </a>&nbsp;
                <form action="{{url('admin/phonebooks', [$phonebook->id])}}" method="POST">
                    <input type="hidden" name="_method" value="DELETE">
                    <input type="hidden" name="_token" value="{{ csrf_token() }}">
                    <input type="submit" class="btn btn-danger" value="delete"/>
                </form>
            </div>
        </td>
    </tr>
@endforeach

1 Ответ

0 голосов
/ 27 мая 2018

Если у клиента есть много записей телефонной книги (и телефонная книга принадлежит клиенту), то вам нужен столбец client_id в таблице телефонных книг

Затем в модели клиента

public function phonebooks()
{
    return $this->hasMany(App\Phonebook::class);
}

В модели телефонной книги

public function client()
{
    return $this->belongsTo(App\Client::class);
}

В контроллере

    $phonebooks = Phonebook::with('client')->get();
    return view('admin.phonebooks.index',compact('phonebooks'));
}

Все ваши модели телефонной книги будут иметь отношение ->client, поэтому в представлении

<td>{{$phonebook->client->title}}</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...