Присоединять ключ чужеземный (FK) в Laravel 5.1 используя Eloquent

Мое сомнение: я не знаю, как делает Laravel 5.1, чтобы приносить правильно FK, ассоциируемую с Вашей соответствующей таблицей с Eloquent?

Предполагая, что есть таблица клиент с признаками, пойдите, назовите, id_tarjeta.

Я делаю консультацию в модели или в драйвере?

3
задан 28.04.2017, 18:44
2 ответа

ЗАМЕТЬ: Ответ полностью основан на документации и коде Laravel:
Документация: Eloquent - Relationships
Код: Eloquent - Model


Хотя я не знаю тип связи, я буду принимать OneToOne в этом случае, не был бы должен меняться много (за исключением методов и возможно ключи) в случае, который был бы другим типом.

Смоделировал клиент:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cliente extends Model
{
    /**
     * Obtener las tarjetas del cliente.
     */
    public function tarjeta()
    {
        return $this->hasOne('App\Tarjeta');
    }
}

Я моделирую карточке:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tarjeta extends Model
{
    /**
     * Obtener el cliente dueño de la tarjeta.
     */
    public function cliente()
    {
        return $this->belongsTo('App\Cliente', 'id_tarjeta');
    }
}

Отвечая на вопрос, если консультация делается в модели или в драйвере, ответ: завись от рисунка твоего приложения.

Обычно было бы более подходящим делать консультацию в драйвере, хотя завися главные файлы, которые ты используешь, возможно, что лучше, чтобы ты это сделал в хранилище, услуге, job или в какой-то другой части приложения (даже в той же модели).

В драйвере просто ты можешь называть такую связь:

<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Cliente;

class AnyController extends Controller
{

    public function showCliente()
    {

    // Obtener la tarjeta asociada al cliente con id 1
    $tarjeta = Cliente::find(1)->tarjeta;

    // .....

    }
}
1
ответ дан 24.11.2019, 14:21
  • 1
    Спасибо @Shaz из-за твоего ответа, меня, должно быть, переместил из-за высокого secci и # 243; n Eloquent - Relationships, спасибо tambi и # 233; n из-за того, что пере-формулирует мой вопрос более ясной формы! Привет – Gaston Diaz 19.05.2016, 12:49
  • 2
    Если ответ ты sirvi и # 243; ты можешь помечать ее как принятая. – Shaz 19.05.2016, 14:23

я рекомендую тебе работать с миграциями, ahГ - diseГ±as хорошо твоя таблица и ты показываешь foreign.

Schema::table('posts', function ($table) {
  $table->integer('user_id')->unsigned();
  $table->foreign('user_id')->references('id')->on('users');
});
0
ответ дан 24.11.2019, 14:21
  • 1
    Спасибо Леандро из-за твоего готового ответа, не работал с миграциями из-за echo, которого уже эта таблица скажи себе, и # 241; ada и загруженная данными, но для будущих проектов har и # 233;! Сердечный привет – Gaston Diaz 19.05.2016, 12:51