1

İyonik uygulamanın kullanımı için bir api yapmak istiyorum (arka uç için laravel 4.2 kullanıyorum). örneğin :İki tablodan (kullanıcılar ve yazılar) iyonik için bir api nasıl yapılır

    $tourists = User::where('block','0') 
          ->where('guider', 1) 
          ->where('location', $location) 
          ->orderBy($orderBy, 'desc') 
          ->orderBy('updated_at', 'desc') 
          ->get(); 
       return View::make('frontend.data.touristsData',array('tourists'=>$tourists)); 

// touristsData:

// my app.js kullanmış
<?php 
    echo json_encode($tourists); 

(iyonik):

// aşağıdaki $ turist yapılmış

.controller('listController', ['$scope','$http','$state','$ionicModal', function($scope, $http, $state,$ionicModal){ 

    $http.get("./touristsData").success(

     function(data){ 
      $scope.tourists = data; 
...... 

// html

<div>{{tourists.username}}: {{tourists.intro}}</div> 

// yukarıdaki bir masanın

ama ne ben, örneğin iki tablo varsa içindir, kullanıcılar masa ve mesajlar tablo

// kullanıcıların tablo (laravel göç)

  $table -> increments('id');//id auto_increment 
     $table -> string('username',30); 
     $table -> string('email',60) -> unique(); 
     $table -> string('password',64); 
     $table -> boolean('admin')->default(0); 
     $table -> boolean('block')->default(0); 

     $table -> integer('tradeTime'); 
     $table -> string('nationality', 50); 

// mesajlar tablo

  $table->increments('id'); 
     $table -> integer('needHour'); 


     $table -> string('travelDestination',40); 
     $table -> text('intro',300); 
     $table -> string('otherWords', 100); 
     $table->integer('user_id'); 
     $table->softDeletes(); 

     $table ->timestamps(); 

//user.php

<?php 

use Illuminate\Auth\UserTrait; 
use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableTrait; 
use Illuminate\Auth\Reminders\RemindableInterface; 

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'users'; 
     protected $guard = array('email', 'password'); 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = array('password', 'remember_token'); 


    public function posts(){ 
     return $this->hasMany('Posts'); 
    } 

//post.php

<?php 
use Illuminate\Database\Eloquent\SoftDeletingTrait; 
class post extends Eloquent{ 
    use SoftDeletingTrait; 
    protected $dates = ['deleted_at']; 

    protected $fillable = ['needHour', 'travelDestination','intro','otherWords']; 


    public function user() 
    { 
    return $this->belongsTo('User'); 
    } 
} 
kullanıcıların masa ve mesajlar tablo user_id birbirine bağlantılı olduğunu görebilirsiniz

, yüzden benim sorum nasıl yapabiliriz çıktı iki içerikleri Tablo kombine, sadece yukarıdaki gibi, sadece bir tablo çıktı (bu kolay)?

ne ben achevie istiyorum aşağıdaki kodla gibidir:

<div>{{tourists.username}} : {{tourists.travelDestination}}</div> 
+0

Modeller ve tablolar için bir isim kuralına uymalısınız. Tablo adınız yayınlar ve modeli 'İhtiyaç'. Modellerin isimlerini göremiyorum. İkisi de aynı isim alanında mı? – ggderas

+0

üzgünüm, sadece değiştirdim – franklee

cevap

1

bunu başarmak için birçok yol vardır.

kullanabilirsiniz

Sen laravel hevesli Yükleniyor kullanabilirsiniz

Kullanıcı modeli bu

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    /** 
    * The table associated with the model. 
    * 
    * @var string 
    */ 
    protected $table = 'users'; 

    public function posts() 
    { 
     return $this->hasMany('App\Posts'); 
    }  
} 
gibi görünebilir (şiddetle yeniden kullanılabilir amaçlarla bu yaklaşımı tavsiye)

$userWithDestinations = User::where('condition')->join('destination_table', function ($join) 
{ 
    $join->on('user.userID', '=', 'post_table.userID') 
})->where('moreConditions')->get() 
katıldı

Böyle bir şey yapmak için:

$userWithDestinations = User::where('condition')->with(['posts'])->where('moreConditions')->get(); 

böyle bir JSON veri üretecektir hevesli yüklerken Bu son kod:

sizin KULLANICI İLETİLERİNDE yana
[ 
    { 
     userID:1, 
     name: Luis, 
     posts: 
     [ 
      { 
       postID: 1, 
       travelDestination: 'Mexico' 
      }, 
      { 
       postID: 11, 
       travelDestination: 'France' 
      },    
     ] 
    }, 
    { 
     userID:13, 
     name: John, 
     posts: 
     [ 
      { 
       postID: 14, 
       travelDestination: 'Germany' 
      }, 
      { 
       postID: 55, 
       travelDestination: 'Brazil' 
      },    
     ] 
    }  
] 

aşağıdaki gibi bir şey yapabileceğini açısal içinde, bir 1-N ilişkidir Kullanıcı başına sadece ilk gönderiyi almak istiyorsanız

{{tourist.username}} : {{tourist.posts[0].travelDestination}} 

Larevel Modeli Dokümanlar

https://laravel.com/docs/5.1/eloquent-relationships

NOT

Sorunuz özetidir aslında "bir API makie", bir laravel-Modeli şüphe fazlası var hakkında .

+0

Bu arada, ben senin cevabını (istekli yükleme yolu) kullandığım ama çalışmıyor gibi görünüyor laravel 4.2 kullanıyorum – franklee

+0

Post Modeli ile ilişkiyi oluşturduğunuzdan emin olun. Bu arada, "mesajlar" tablosu için bir modeliniz olduğunu düşünüyorum, doğru mu? – ggderas

+0

Elimde var ve sorumu ona göstereceğim. Bekleyin sn – franklee