Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Friendly api

Estas en el tema de Friendly api en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente, aquí sigo peleado con laravel 5.1 jeje, en este caso quiero trabajar con la API https://packagist.org/packages/gridprinciples/friendly para establecer relaciones de "amistad" entre los ...
  #1 (permalink)  
Antiguo 31/03/2016, 07:30
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Friendly api

Hola gente, aquí sigo peleado con laravel 5.1 jeje, en este caso quiero trabajar con la API https://packagist.org/packages/gridprinciples/friendly para establecer relaciones de "amistad" entre los usuarios del sitio, estoy siguiendo la docu una vez más pero no consigo que funcione, cuando corro el endpoint me sale esto:

http://localhost/site/public/api/user/friend/2/4

mi controller está asi:
namespace App\Http\Controllers;
Código:
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use App\Profile;
use DB;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Friendly;

   public function ask_friend($requesterId, $receivingId) {
        
               
        // Requester user.
        $userRequester = User::where('id', $requesterId)->first();
        
        // Receiving user.
        $userReceiving = User::where('id', $receivingId)->first();
        
        // may include "pivot" data.
        $userRequester->befriend($userRequester, [
            'name'       => $userRequester->email,
            'other_name' => $userReceiving->email,
            'start'      => date('Y-m-d') ,
        ]);
    
    }
Por motivos de espacio no he pegado el resto de acciones del controlador.
La configuración la he hecho tal cual indican en la docu que he pasado anteriormente.
Y el mensaje de error es este:

Código:
dingo {"message":"Call to undefined method Illuminate\\Database\\Query\\Builder::befriend()","status_code":500,"
Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 31/03/2016, 07:36
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Friendly api

Me autorespondo, acabo de entender porque no me funciona, el caso es que use Friendly debe añadirse dentro de la clase, es decir:

Código:
// AQUI NO use Friendly;
class UserController extends BaseController {

    use Friendly;
.......
Le explicación aquí de que es un TRAIT.
http://culttt.com/2014/06/25/php-traits/

Ahora tengo otro problema , me sale un error con lo siguiente
Código:
<span class="exception_message">Trait 'App\Http\Controllers\Friendly' not found</span>
Parece que no encuentra esta clase.

He cambiado el código por esto:
Código:
class UserController extends BaseController {

    use \GridPrinciples\Friendly\Traits\Friendly;

.......
y ahora el error de antes
Código:
 dingo {"message":"Call to undefined method Illuminate\\Database\\Query\\Builder::befriend()","status_code":
__________________
Videotutoriales de Drupal

Última edición por Dundee; 31/03/2016 a las 07:56
  #3 (permalink)  
Antiguo 31/03/2016, 08:17
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Friendly api

Solucionado (pero no entiendo del todo porque no puedo hacerlo todo desde el controlador).

En mi controlador tengo ahora esto:
Código:
    public function ask_friend($requesterId, $receivingId) {
        
        // Requester user.
       $userRequester = User::where('id', $requesterId)->first();  
        
        // Receiving user.
       $userReceiving = User::where('id', $receivingId)->first();
       
       return $userRequester->request_friend_ship ($userRequester, $userReceiving);        
      
    }
Y en el modelo user:
Código:
<?php

namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
    use Authenticatable, CanResetPassword, \GridPrinciples\Friendly\Traits\Friendly;

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

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['email', 'password'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];
    
    public function profile()
    {
        return $this->hasOne(Profile::class); // links this->id to events.course_id
    }
    
    public function request_friend_ship ($userRequester, $userReceiving) {

        
        // may include "pivot" data.
        $query_friend = $userRequester->befriend($userReceiving, [
            'name'       => $userReceiving->email,
            'other_name' => $userRequester->email,
            'start'      => date('Y-m-d') ,
        ]);
        
        return $query_friend;
    
    }
    
  
}
__________________
Videotutoriales de Drupal

Etiquetas: laravel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:41.