eloquent belongsTo在实时服务器上返回键而不是对象,但在开发机器上模型

时间:2014-12-07 16:38:11

标签: laravel eloquent relationships

我在Laravel中有一些模特,但其中一个表现得很奇怪......


这有点令人尴尬,

我已经设法在我的生产服务器上从我的开发机器上创建了不同的列名...在我的开发机器上,该列名为creation_id,但在我的生产机器上,它被称为创建...


我有一个包含许多事件的Creation 该事件属于Creation和hasMany eventAttendees eventAttendees属于事件,并且可以访问创建 - >标题,为了方便是大父母

在我的开发机器上,一切都按照我的预期工作,但在我的实时服务器上,我获得了id而不是来自Event->创建的创建......

注意,EventAttende-> getEventCreationTitleAttribute一直工作到'getCreationTitleAttribute',这意味着EventAttende-> event()有效...

我正在使用laravel 4.1

这是相关代码,从freezeNodes管理员调用getCreationTitleAttribute

// Filename: /app/models/Event.php
<?php
namespace XXX;
class Event extends \Eloquent 
{
    protected $connection = 'legacy';

    public function creation()
    {
        return $this->belongsTo('XXX\Creation', 'creation_id');
    }

    public function getCreationTitleAttribute()
    {
        $x = $this->creation; // I have also tried $this->creation()->first() which returns null on live server

        // This should be the normal behaviour, the test shouldn't even be necessary
        // And the test wasn't there before i uploaded to my live server
        if (is_object($x))
            return $x->title;

        // This is the flow I would expect, 
        // and the flow I get on my production machine...
        return $x;
    }

    public function eventAttende()
    {
        return $this->hasMany('XXX\EventAttende');
    }
}

// Filename: /app/models/Creation.php
<?php
namespace XXX;
class Creation extends \Eloquent 
{
    protected $connection = 'legacy';

    public function Creation()
    {
        $this->bgColor="FFFFFF";
        $this->textColor="000000";
        $this->linkColor="0000FF";
    }

    public function events()
    {
        return $this->hasMany('XXX\Event');
    }
}

// Filename: /app/models/EventAttende.php
<?php
namespace XXX;
class EventAttende extends \Eloquent 
{
    protected $connection = 'legacy';

    // this works
    public function event()
    {
        return $this->belongsTo('XXX\Event', 'event');
    }

    public function getEventCreationTitleAttribute()
    {
        return $this->event()->first()->creationTitle;
    }
}

我正在使用freezenodes管理员来显示数据。 (业务代码是较旧的旧版平台,因此我还没有使用laravel中的数据。)

使用该属性的列定义部分是:

/**
 * The display columns
 */
'columns' => array(
    'id',
    'creation_title' => array(
        'title' => 'Kreation',
        //'name_field' => 'full_name',
        //'type' => 'relationship',
        //'relationship' => 'creation',
    ),
    'name' => array(
        'title' => 'Navn'
    ),

),

1 个答案:

答案 0 :(得分:0)

我以某种方式在我的生产服务器上设置了不同的colum名称,从我的开发机器...

  • 在我的开发机器上,该列名为creation_id,
  • 在我的生产机器上,它被称为创作......