Не удается расширить модель Laravel

Даниэль, удивительное объяснение! Несколько слов по этому и хорошему списку указателя контекста выполнения this в случае обработчиков событий.

В двух словах this в JavaScript указывает объект, у которого (или из контекста выполнения которого) текущая функция была запущена, и она всегда доступна только для чтения, вы все равно не можете ее установить (такая попытка закончится сообщением «Недопустимая левая сторона в присваивании».

Для обработчиков событий: встроенный обработчики событий, такие как <element onclick="foo">, переопределяют любые другие обработчики, прикрепленные ранее и раньше, поэтому будьте осторожны, и лучше не вмешиваться в встроенное делегирование событий. И благодаря Заре Алавердян, которая вдохновила меня на этот список примеров через несогласие обсуждение:)

  • el.onclick = foo; // in the foo - obj
  • el.onclick = function () {this.style.color = '#fff';} // obj
  • el.onclick = function() {doSomething();} // In the doSomething - Window
  • el.addEventListener('click',foo,false) // in the foo - obj
  • el.attachEvent('onclick, function () { // this }') // window, all the compliance to IE :)
  • <button onclick="this.style.color = '#fff';"> // obj
  • <button onclick="foo"> // In the foo - window, but you can <button onclick="foo(this)">
0
задан James Bailey 13 July 2018 в 16:33
поделиться

1 ответ

Можете ли вы попробовать это? Дайте мне знать, если это сработает.

Модель приложения

class Application extends Model
{
    protected $data = [
        'data' => 'array'
    ];
    protected $primaryKey = 'ucid';
    protected $fillable = [
        'ucid', 'data'
    ];
    public function user() 
    {
        return $this->hasOne(User::class, 'ucid');
    }
    public function rep() 
    {
        return 'Test';
    }
}

Пользовательская модель

class User extends Authenticatable
{
    public function application()
    {
        return $this->belongsTo(Application::class, 'ucid', 'ucid');
    }
}

Как вы видите, я переключил hasOne и belongsTo в ваших моделях.

Также .. третий аргумент в hasOne из Application Model не требуется, поскольку значение из $ primaryKey будет использоваться с момента его определения, однако вы должны указать третий аргумент в belongsTo модели User

1
ответ дан Seva Kalashnikov 17 August 2018 в 12:23
поделиться
  • 1
    Это работает, но почему? также у меня могут быть 2 пользователя с одним и тем же приложением, как это работает? – James Bailey 13 July 2018 в 20:09
  • 2
    @JamesBailey Пользовательская модель не знает, что вы определили клиента $ primaryKey при выполнении своего SQL-запроса. – Seva Kalashnikov 13 July 2018 в 21:16
  • 3
    @JamesBailey вам придется преобразовать свои отношения во многих-ко-многим со сводной таблицей – Seva Kalashnikov 13 July 2018 в 21:17
Другие вопросы по тегам:

Похожие вопросы: