один-ко-многим видение в Laravel показывает в поле зрения - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением laravel для телефонной книги. Я хочу, чтобы каждая телефонная книга имела клиентов hasOne, но клиенты принадлежат многим телефонным книгам. У меня есть столбец в таблице телефонных книг под названием client_id, теперь, когда я устанавливаю отношения, как я могу использовать их в контроллере и передать ихкак на объекте, и вот мой код

контроллер телефонной книги

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

Ответы [ 2 ]

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

Я бы посоветовал загрузить все клиенты с готовностью к загрузке, чтобы она была более эффективной, вы можете прочитать, почему на документах

Вы можете сделать это на своем контроллере:

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

Затем, по вашему мнению, вы можете получить доступ к клиенту телефонной книги благодаря отношениям, которые вы определили, выполняя это:

@foreach ($phonebooks as $phonebook) 
    {{ $phonebook->client->title }}
@endforeach
0 голосов
/ 28 мая 2018

у вас есть свойство клиента в телефонной книге, используйте его

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