Własne kolumny tabeli w Laravel

0

Cześć

wdrażam się we framework Laravel 5.4, ustawiłem nową tabele "users" z własnymi kolumnami, np "users_id" (PK), "users_pswd".

Laravel wyrzuca komunikat:

QueryException in Connection.php line 647:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.id' in 'where clause' (SQL: select * from users where users.id = 2 limit 1)

Nie mogę ustawić własnych tabel, nie chcę robić żadnych migracji, to Ja chce dostosować system do mojej bazy, a nie odwrotnie. Co z tym zrobić ?

0

Trocha dziwną nazwę tej kolumny dałeś, ale skoro masz już tak napisaną bazę to co zrobisz...
Wygląda na to, że próbujesz wyciągnąć jakiegoś usera za pomocą ::find(), tak?
Wszystko masz w komunikacie błędu już opisane - nie może znaleźć kolumny id w tabeli users.
Jak chcesz nadpisywać domyślny sposób działania Eloquenta to musisz to zrobić po całości.
Z dokumentacji:

Primary Keys

Eloquent will also assume that each table has a primary key column named id. You may define a $primaryKey property to override this convention.

In addition, Eloquent assumes that the primary key is an incrementing integer value, which means that by default the primary key will be cast to an int automatically. If you wish to use a non-incrementing or a non-numeric primary key you must set the public $incrementing property on your model to false.

0

Nie nie, to nie o to chodzi, tam komunikat w SQL jest:

SQL: select * from users where users.id = 2 limit 1

w predykacie WHERE powinno być users.user_id

Reasumując, w tabelach mam własne nazwane kolumny, tymczasem w przypadku tabeli Users, Laravel narzuca mi kolumnę id a Ja mam user_id

0
Zakręcony Szczur napisał(a):

Nie nie, to nie o to chodzi, tam komunikat w SQL jest:

SQL: select * from users where users.id = 2 limit 1

w predykacie WHERE powinno być users.user_id

Reasumując, w tabelach mam własne nazwane kolumny, tymczasem w przypadku tabeli Users, Laravel narzuca mi kolumnę id a Ja mam user_id

Dalej się chyba nie rozumiemy inny przykład :

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into users (user_login, user_pswd, updated_at, created_at) values ([email protected], $2y$10$o9i.69Bg5ZOTJj8mdjUe9u5SEQB853s0gi15iL2tJig1BahLhKk72, 2017-03-16 0906, 2017-03-16 0906))

Nie mam takich kolumn jak **updated_at **czy created_at

1

Dałeś jeden problem to napisałem go jak rozwiązać. Teraz piszesz o kolejnym twierdząc, że dalej się nie rozumiemy.

Napisałem:

Jak chcesz nadpisywać domyślny sposób działania Eloquenta to musisz to zrobić po całości.

czyli znowu mamy odwołanie do dokumentacji:

Timestamps

By default, Eloquent expects created_at and updated_at columns to exist on your tables. If you do not wish to have these columns automatically managed by Eloquent, set the $timestamps property on your model to false:

Nie wiem jak wygląda Twoja baza, nie wiem co konkretnie próbujesz zrobić w kodzie. Podałeś tylko komunikat błędu i nazwę jednej z kolumn w tabeli. Teraz piszesz o innym błędzie. Poczytaj dokumentację, tam masz wszystko opisane.

Więcej masz tutaj.

0

Podaj najlepiej jak masz złożone zapytanie do bazy.

0

Pewnie używasz modelu User, a Eloquent (ORM w Laravelu) domyślnie za kolumnę id przyjmuje id. To samo z updated_at. Jak Twoja się nazywa user_id to musisz dodać do modelu:

// ...
class User extends Authenticatable
{
    use Notifiable, SoftDeletes;

    protected $primaryKey = 'user_id';

    public $timestamps = false;
    
    //... 
}

RTFM zanim zaczniesz działać z Laravelem :) Zajmie Ci to kilkadziesiąt minut całość.

https://laravel.com/docs/5.2/eloquent#eloquent-model-conventions

https://laracasts.com/discuss/channels/laravel/create-migrations-and-models-from-existing-database
http://packalyst.com/packages/package/ignasbernotas/laravel-model-generator

0

Wciąż się nie rozumiemy, ale nie ma problemu już sobie poradziłem, UWAGA ODPOWIDŹ:

w klasie User class User extends Authenticatable {} wystarczy zdefiniować swoją własną nazwę kolumny, w tym przypadku user_id, czyli:

protected $primaryKey = 'user_id';

Takiej odpowiedzi oczekiwałem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1