2016-03-25 14 views
0

Üç alt menüye sahip bir etkinlik menüsüm var. Bu alt menü, etkinlik için ortaktır ancak farklı tabloya sahiptir. Bu yüzden bu üç tabloyu bir model sınıfında kullanmak istiyorum, operasyonel bireyi birbirimize nasıl kaydedebilirim? aşağıdaki gibiDaha sonra laravel-5 modelinde bir tablo nasıl kullanılır

Benim kodudur:

<?php 
namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Support\Str; 
use DB; 


class Activity extends Model { 

    protected $table1 = 'task_management'; 
    protected $table2 = 'call_management'; 
    protected $table3 = 'event_management'; 
} 
+0

Tablolarınızı normalleştiremez ve her varlık için bir model oluşturamaz mısınız? – Gokigooooks

cevap

0
use DB; 

I have preferred using the DB query whenever i had to work with more than one table, below is a sample query. 
$data = DB::table('base table name') 
       ->join('join table name', 'join table name id', '=', 'master table name id') 
       ->select('column 1', 'column 2', 'column 3') 
       ->where('column1', $val); 
+0

Model sınıfının nesnesini kullanarak birden çok tablo koşulunda nasıl işlem yapabilirim? –

+0

Bu mevcut yanıtı kontrol edin: http://stackoverflow.com/questions/25136211/laravel-inserting-into-multiple-tables – Peeje

0

Sen modelleri üzerine inşa hatta sadece @Peeje belirtildiği gibi düz SQL sorguları kullanır başka bir sınıf oluşturabilir. Modelin Laravel'de tek bir masa ile çalışması amaçlanıyor - Farklı tablolarla çalışmanın kolay bir yolu olduğunu düşünmüyorum.

0

Ben, Etkili bir şekilde takip etmenizi öneriyoruz,

3 modeller oluşturmak ve yapmalıyım relationship

Sanki sen $task = User::find(1)->TaskManagement; gibi alınamadı sağlar

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class CallManagement extends Model 
{ 
    /** 
    * Get the task record associated with the user. 
    */ 
    public function task() 
    { 
     return $this->hasOne('App\TaskManagement'); 
    } 
} 

basit olurdu Not: Modelinizi ihtiyacınıza göre oluşturmalı ve özelleştirmelisiniz.