7

saludos donde quiera que se encuentren de ese lado del receptor, tengo semanas aprendiendo sobre este gigante que es laravel (5.5), tengo un sistema que desarrollar durante mi trabajo de grado, pero tengo una gran falla, no encuentro o no se como pasar los métodos de dos tablas relacionadas (1-1), cada una con su controlador a un a vista en especifico, si me podrían ayudar estaría grandemente agradecido, a continuación los codigos...

**las rutas**
<?php

use App\Institucion;

Route::get('/', function () 
    {
        return view('index');
    });
Route::get('/instituciones','InstitucionesController@index');
Route::get('/instituciones/agregar','InstitucionesController@agregar');
Route::post('/instituciones','InstitucionesController@store');
Route::get('/instituciones/{id}','InstitucionesController@show')
    ->where('id','[0-9]+');
Route::get('/estudios/agregar','CasosEstudiosController@agregar');
Route::post('/estudios','CasosEstudiosController@store');
Route::get('/estudios/{id}','CasosEstudiosController@show')
    ->where('id','[0-9]+');




**controlador de la tabla instituciones**
    <?php

namespace App\Http\Controllers;


use App\Http\Requests\InstitucionRequest;

use App\Institucion;
use App\CasoEstudio;
use Illuminate\Http\Request;

class InstitucionesController extends Controller
{
    public function index()
    {
      $instituciones = Institucion::all();
      return view('instituciones/index',['instituciones'=>$instituciones]);
    }
    public function agregar()
    {
      $instituciones = Institucion::all();
      return view('instituciones/agregar', compact('instituciones'));
    }
    public function store()
    {
      request()->validate([
        'nom'=>'required',
        'rif'=>'required',
        'naturaleza'=>'',
        'email'=>'required',
        'tlf1'=>'required',
        'tlf2'=>'required',
        'tlf3'=>'required',
        'direccion'=>'required',
      ]);
      Institucion::create(request()->all());
      return redirect('instituciones');
    }
    public function show($id)
    {      
      $institucion = Institucion::find($id);
      return view('instituciones/show',['institucion'=>$institucion]);
    }
}

**controlador de la tabla casos_estudios**
<?php

namespace App\Http\Controllers;

use App\Http\Requests\InstitucionRequest;
use App\Http\Requests\CasoEstudioRequest;

use App\Institucion;
use App\CasoEstudio;
use Illuminate\Http\Request;

class CasosEstudiosController extends Controller
{
    public function agregar()
    {
      $casos_estudios = CasoEstudio::all();
      return view('/estudios/agregar', compact('casos_estudios'));
    public function store()
    {
        request()->validate([
        'fec_envio' => 'request',
        'fec_respuesta' => 'request',
        'num_entrega' => 'request',
        'num_oficio_siss' => 'request',
        'num_exp_supervision' => 'request',
      ]);
      CasoEstudio::create(request()->all());
      return redirect('instituciones');
    }
    public function show($id)
    {
      $caso_estudio = CasoEstudio::find($id);
      return view('estudios/show',['caso_estudio'=>$caso_estudio]);
    }
}

**la vista :( **

{{-- DATOS DE UNA INSTITUCION EN PARTICULAR --}}

@extends('layouts.main')

@section('title')

    {{ $institucion -> nom}}

@endsection

@section('content')
<!-- Breadcrumbs-->
    <ol class="breadcrumb">
        <li class="breadcrumb-item">
            <a href={{asset("/")}}>Inicio</a>
        </li>
        <li class="breadcrumb-item active">
            <a href={{asset("/instituciones")}}>Instituciones</a>
        </li>
        <li class="breadcrumb-item active">
            <a href={{asset("/instituciones/{$institucion->id}")}}>{{$institucion->nom}}</a>
        </li>
    </ol>

<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active show" data-toggle="tab" href="#Perfil">Perfil</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" data-toggle="tab" href="#Estudio">Estudio</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" data-toggle="tab" href="#Seguimiento">Seguimiento</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Archivos</a>
    <div class="dropdown-menu">
      <a class="dropdown-item" href="#">01</a>
      <a class="dropdown-item" href="#">02</a>
      <a class="dropdown-item" href="#">03</a>
    </div>
  </li>
</ul>
 {{-- pestaña 1 --}}
<div id="myTabContent" class="tab-content">
  <div class="tab-pane fade active show" id="Perfil">
    <ul class="list-group">
        <li class="list-group-item d-flex justify-content-between align-items-center">
          Acronimo:<br>{{$institucion -> acronimo}}
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-center">
          Nombre:<br>{{$institucion -> nom}}
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-center">
          RiF:<br>G-{{$institucion -> rif}}
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-center">
          Naturaleza:<br>{{$institucion -> naturaleza}}
        </li>
    </ul>
  </div>

 {{-- pestaña 2 --}}
  <div class="tab-pane fade" id="Estudio">
    <form action="{{asset("/estudios")}}" method="get" role="form">

      @if( empty($institucion['caso_estudio_id'] ))
        {{ csrf_field() }}
{{--         <button type="submit" class="btn btn-danger">
        Agregar Caso de Estudio</button> --}}


    <div class="container-fluid">
       <div class="panel panel-danger">
            <div class="panel-body">
                <form action="{{asset("/estudios")}}" method="post" role="form">
                    {{ csrf_field() }}
                    <legend>Agregar el caso de estudio</legend>

                    @include('layouts._validation-errors')


                    <div class="form-group">
                        <label>Fecha de envio</label>
                        <input name="fec_envio" value="{{old('fec_envio')}}" class="form-control" type="number" placeholder="Indique Fecha de envio">
                    </div>
                    <div class="form-group">
                        <label>Fecha de respuesta</label>
                        <input name="fec_respuesta" value="{{old('fec_respuesta')}}" class="form-control" type="number" placeholder="Indique Fecha de respuesta">
                    </div>
                    <div class="form-group">
                        <label>Nº Entrega</label>
                        <input name="num_entrega" value="{{old('num_entrega')}}" class="form-control" type="number" placeholder="Nº Entrega">
                    </div>
                    <div class="form-group">
                        <label>Nº Oficio SiSS</label>
                        <input name="num_oficio_siss" value="{{old('num_oficio_siss')}}" class="form-control" type="number" placeholder="Nº Oficio SiSS">
                    </div>
                    <div class="form-group">
                        <label>Nº Expediente de Supervision</label>
                        <input name="num_exp_supervision" value="{{old('num_exp_supervision')}}" class="form-control" type="number" placeholder="Nº Expediente de Supervision">
                    </div>


{{--                     <div class="form-group">
                      <div class="custom-control custom-checkbox">
                        <input type="checkbox" value='1' name='cot_tesoro' class="custom-control-input" id="customCheck1">
                        <label class="custom-control-label" for="customCheck1">Cotiza en el Tesoro Nacional</label>
                      </div>
                      <div class="custom-control custom-checkbox">
                        <input type="checkbox" value='1' name='cot_banavih' class="custom-control-input" id="customCheck1">
                        <label class="custom-control-label" for="customCheck1">Cotiza en BANAVIH?</label>
                      </div>
                      <div class="custom-control custom-checkbox">
                        <input type="checkbox" value='1' name='cot_ivss' class="custom-control-input" id="customCheck1">
                        <label class="custom-control-label" for="customCheck1">Cotiza en el IVSS</label>
                      </div>
                    </div> --}}
                    <div class="form-group">
                        <label>Porcentaje aportado por el trabajador</label>
                        <input name="aport_trabaj" value="{{old('aport_trabaj')}}" class="form-control" type="text" placeholder="Indique el procentaje aportado por el trabajador">
                    </div>
                    <div class="form-group">
                        <label>Porcentaje aportado por el patrono</label>
                        <input name="aport_patron" value="{{old('aport_patron')}}" class="form-control" type="text" placeholder="Indique porcentaje aportado por el patrono">
                    </div>

                    <div class="form-group">
                        <label>Nº activos fijos</label>
                        <input name="fijos_act" value="{{old('fijos_act')}}" class="form-control" type="text" placeholder="Cantidad de activos fijos">
                    </div>
                    <div class="form-group">
                        <label>Nº cantidad de activos contratados</label>
                        <input name="contratados_act" value="{{old('contratados_act')}}" class="form-control" type="text" placeholder="Cantidad de activos contratados">
                    </div>
                    <div class="form-group">
                        <label>Nº activos (otros)</label>
                        <input name="otros_act" class="form-control" value="{{old('otros_act')}}" type="text" placeholder="Cantidad de activos (otros)">
                    </div>

                    <div class="form-group">
                        <label>Nº mujeres jubiladas</label>
                        <input name="jubiladas" value="{{old('jubiladas')}}" class="form-control" type="text" placeholder="Cantidad de mujeres jubiladas">
                    </div>
                    <div class="form-group">
                        <label>Nº hombres jubilados</label>
                        <input name="jubilados" value="{{old('jubilados')}}" class="form-control" type="text" placeholder="Cantidad de hombres jubilados">
                    </div>
                    <div class="form-group">
                        <label>Monto anual</label>
                        <input name="jubilados_bs_anual" value="{{old('jubilados_bs_anual')}}" class="form-control" type="text" placeholder="Monto anual de la nomina en Bs.">
                    </div>

                    <div class="form-group">
                        <label>Nº mujeres pensionadas por sobrevivientes</label>
                        <input name="pensionadas_s" value="{{old('pensionadas_s')}}" class="form-control" type="text" placeholder="Cantidad de mujeres pensionadas por sobrevivientes">
                    </div>
                    <div class="form-group">
                        <label>Nº hombres pensionados por sobrevivientes</label>
                        <input name="pensionados_s" value="{{old('pensionados_s')}}" class="form-control" type="text" placeholder="Cantidad de hombres pensionados sobrevivientes">
                    </div>
                    <div class="form-group">
                        <label>Monto anual</label>
                        <input name="pensionados_s_bs_anual" value="{{old('pensionados_s_bs_anual')}}" class="form-control" type="text" placeholder="Monto anual de la nomina en Bs.">
                    </div>

                   <div class="form-group">
                        <label>Nº mujeres pensionadas por incapacidad</label>
                        <input name="pensionadas_i" value="{{old('pensionadas_i')}}" class="form-control" type="text" placeholder="Cantidad de mujeres pensionadas por incapacidad">
                    </div>
                    <div class="form-group">
                        <label>Nº de hombres pensionados por incapacidad</label>
                        <input name="pensionados_i" value="{{old('pensionados_i')}}" class="form-control" type="text" placeholder="Cantidad de hombres pensionados incapacidad">
                    </div>
                    <div class="form-group">
                        <label>Monto anual</label>
                        <input name="pensionados_i_bs_anual" value="{{old('pensionados_i_bs_anual')}}" class="form-control" type="text" placeholder="Monto anual de la nomina en Bs.">
                    </div>

                    <div class="form-group">
                        <label>Observaciones</label>
                        <input name="observaciones" value="{{old('observaciones')}}" class="form-control" type="textarea" placeholder="Indique alguna observaciones, si existe">
                    </div>
                    <button type="submit" class="btn btn-danger">Agregar Ahora</button>
                </form>
            </div>
        </div>
    </div>


{{-- final caso de estudio --}}




      @else
        <div class="row">
          <div class="col-md-12">
            <div class="alert alert-info">
              <div class="tab-pane fade active show" id="Perfil">

                <ul class="list-group">
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Fecha de envio:<br>{{$institucion->casoestudio->fec_envio}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Fecha de respuesta:<br>{{$caso_estudio-> fec_respuesta}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº Entrega:<br>{{$caso_estudio-> num_entrega}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº Oficio SiSS:<br>{{$caso_estudio-> num_oficio_siss}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº Expediente de Supervision:<br>{{$caso_estudio-> num_exp_supervision}}
                    </li>
      {{-- 
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Fecha de envio:<br>{{$caso_estudio-> cot_tesoro}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Fecha de respuesta:<br>{{$caso_estudio-> cot_banavih}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº Entrega:<br>{{$caso_estudio-> cot_ivss}} 
                    </li>   --}}
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Porcentaje aportado por el trabajador:<br>{{$caso_estudio-> aport_trabajador}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Porcentaje aportado por el patrono:<br>{{$caso_estudio-> aport_patron}}
                    </li>

                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº activos fijos:<br>{{$caso_estudio-> fijos_act}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº activos contratados:<br>{{$caso_estudio-> contratados_act}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº ativos (otros):<br>{{$caso_estudio-> otros_act}}
                    </li>

                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Porcentaje aportado por el trabajador:<br>{{$caso_estudio-> jubiladas}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Porcentaje aportado por el patrono:<br>{{$caso_estudio-> jubilados}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Porcentaje aportado por el patrono:<br>{{$caso_estudio-> jubilados_bs_anual}}
                    </li>

                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº mujeres pensionadas por incapacidad:<br>{{$caso_estudio-> pensionadas_i}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº hombres pensionados por incapacidad:<br>{{$caso_estudio-> pensionados_i}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Monto anual de la nomina:<br>{{$caso_estudio-> pensionados_i_bs_anual}}Bs.
                    </li>

                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº mujeres pensionadas por sobreviviente:<br>{{$caso_estudio-> pensionadas_s}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Nº hombres pensionados por sobreviviente:<br>{{$caso_estudio-> pensionados_s}}
                    </li>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Monto anual de la nomina:<br>{{$caso_estudio-> pensionados_s_bs_anual}}Bs.
                    </li>

                    <li class="list-group-item d-flex justify-content-between align-items-center">
                      Observaciones:<br>{{$caso_estudio-> observaciones}}
                    </li>
                </ul>

              </div>
            </div>
          </div>
        </div>

      @endif

    </form>
  </div>
  {{-- pestaña 3 --}}
  <div class="tab-pane fade" id="Seguimiento">
    <p>
      en construccion
    </p>
  </div>
  {{-- pestaña 4 --}}
  <div class="tab-pane fade" id="Archivos">
    <p>
      en construccion
    </p>
  </div>
</div>

@endsection
4
  • Wow creo que la pregunta no esta muy clara, me quedo en la parte donde dices pero tengo una gran falla, no encuentro o no se como pasar los métodos de dos tablas relacionadas (1-1), cada una con su controlador a un a vista en especifico
    – C47
    Commented el 5 oct. 2018 a las 22:54
  • 2
    Aquí está la documentación sobre las relaciones: laravel.com/docs/5.7/eloquent-relationships#one-to-one
    – PAGANA
    Commented el 6 oct. 2018 a las 3:36
  • tienes razon y me disculpo por ello.. y gracias por el interes, necesito por favor me ayudes con esta consulta en mi proyecto select * from casos_estudios left join institucion ON institucion_id = institucion.id si necesitas que te muestre los controladores y modeles, solo dime como lo hago y te los envio
    – baky
    Commented el 8 oct. 2018 a las 20:31
  • gracias logra hacer la consulta gracias a Dios y a la documentación, pero ahora tengo otro detalle en es.stackoverflow.com/questions/203636/… si me ayudan porfa
    – baky
    Commented el 10 oct. 2018 a las 22:51

1 respuesta 1

1

Vamos a suponer que tienes 2 modelos, uno llamado Cliente (con clave foranea id_institucion) y otro llamado Institucion y son una relación 1 a 1 (One To One).

En el modelo Cliente (podría ser en Institución), tienes que crear la funcion de la relación.

 public function institucion(){
        return $this->hasOne(Institucion::class, 'id', 'id_institucion');
    }

esto te permite que cualquier objeto tipo cliente tenga relacionada su institución, pudiendo hacer lo siguiente.

$cliente = Cliente::with(['institucion'])->where('id', 1)->first(); // Buscamos la id 1
echo $cliente->institucion->nombre  // nos devolverá el nombre de la institución (o cualquier atributo que queramos, dado que ya están enlazadas)

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.