Giriş yapmadınız.

#1 29.12.2018 16:15:00

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Laravel outside create ve paginate sorunu.

Selam herkese.
Laravelin eloquentini outside deniyorum ilk kez.Soyle iki sorunum var

User::insert([

'username' => 'death',
'password'=>'123456'

]);

bu kod çalışıyor sorun yok ama. create hata veriyor.

User::create([

'username' => 'death',
'password'=>'123456'

]);

"SQLSTATE[HY000]: General error: 1364 Field 'password' doesn't have a default value",

bu hatayı veriyor.Sorun acaba password alanında mı dedim insert çalışıyor ama..baska bir tabloda denedim comments diye bir tablo actım.created_at updated_at değerleriyle birlikte birde comment adında bir field actım..


User::create([

'comment' => 'death'

]);

enteresan bir şekilde bu kayıt almasına rağmen created_at ve updated_at alanını dolduruyor ama comment alanını null değer atıyor..
anlamadım sorunu.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#2 29.12.2018 17:15:04

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel outside create ve paginate sorunu.

"doesn't have a default value" uyarısı alıyorsanız bunun sebebi gönderdiğiniz formda bu alanın kayıt kısmına ulaşmadığındandır.  Bu alanın fillable olarak işaretlendiğinden emin olun.

Çevrimdışı

#3 29.12.2018 21:14:32

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

sorun formda değil sabit değer veriyorum sadece http post ile geliyorum modele.fillable farketmiyor.ekledim yine aynı sorun.
laracastta bununla ilgili problem yaşamışlar var sql_mode ile ilgili olup olmadığını da bilmiyorum ama insert düzgün bir şekilde yapıyor.
post değerlerini de düzgün alıyor.create methodu yapmıyor.garip gercekten.Bir acayip olanda paginate de çalışmıyor.

symfony request kullandım yine get ile page i okumadı smile

Son düzenleyen deathisonitsway (29.12.2018 21:17:51)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#4 29.12.2018 21:51:52

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel outside create ve paginate sorunu.

password alanı için mutator mı tanımladınız? setPasswordAttribute? Şifreyi bcrypt ile hash yapmadan yazdığınıza göre mutator tanımlamışsınız ama boş değer dönderiyor gibi hissettim.

Bununla ilgili değilse;

User modeline constructor mü eklediniz?

User::creating() olayı kullanarak bir işlem yapıyor musunuz?

Çevrimdışı

#5 29.12.2018 22:44:49

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

basic olsun diye hash felan kullanmadım. insertte dedigim gibi calısıyor. laravel eloquenti outside olarak şöyle kullanıyorum..

use Store\Packages\Database\Eloquent\Connection as Eloquent;

class User extends Eloquent
{
    /**
     * @var $table string
     */
    protected $table='users';
}

Connection şöyle ;

use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Eloquent\Model as Eloquent;

class Connection extends Eloquent
{
    /**
     * @var Capsule $capsule
     */
    public $capsule;

    /**
     * Connection constructor.
     */
    public function __construct()
    {
        parent::__construct();
        $this->capsule = new Capsule;
        $configdb = config('database');

        $this->capsule->addConnection([
            'driver'    => $configdb['driver'],
            'host'      => $configdb['host'],
            'database'  => $configdb['database'],
            'username'  => $configdb['user'],
            'password'  => $configdb['password'],
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ]);

        // Make this Capsule instance available globally via static methods... (optional)
        $this->capsule->setAsGlobal();

        // Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
        $this->capsule->bootEloquent();
    }
}

burda tabi constructor var.değerler normal.yani config yardımcısınla database ayarları doğru geliyor.Cunku her türlü get işlemi sorunsuz calısıyor.
dedigim gibi insert te yapabiliyorum ama create konusunda ne sıkıntı var anlamadım.
Acaba global olarak symfony request katmanını felan mı tanımıyor.


Paginate konusunda da page parametresini alamıyor.Sorunun http parametrelerini alamadıgından oldugunu dusunuyorum ama sabit değer atasamda null kaydediyor.

Son düzenleyen deathisonitsway (29.12.2018 22:46:56)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#6 29.12.2018 23:28:04

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel outside create ve paginate sorunu.

Connection modeli constructor şöyle olacak:

public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
...

Bu yüzden create yöntemi girilen değerleri almıyor çünkü Model::fill() yöntemine boş bir array gönderiyorsunuz.

Burada bir şeyler karışmış. Neden böyle bir yol izlediniz tam bilmiyorum ama Laravel olmadan Eloquent kullanırken, kullandığınız sistemin bir başlangıç noktası vardır, vendor/autoload.php dosyasını dahil ettiğiniz nokta. Capsule sınıfını bu noktada yükleyin yeterli. Sonra Illuminate\Database\Eloquent\Model sınıfını kullanarak kendi modellerinizi kullanabilirsiniz.

Çevrimdışı

#7 30.12.2018 13:47:08

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

Evet mgsmus senin dediğin gibi kullandım.Oldu.ben hızlı bir başlangıç yapayım dedim öyle yapıverdim ama yalnışmış.
Biz hep doctrine kullanıyoruz projelerde,eloquenti başka projelerde kullanmak için entegre edicem.Bu iyi oldu ama paginate kısmında hala sorunum var.

https://ibb.co/XLydhXr

kodu basitçe resimdeki gibi kullandım kayıt yapıyor ama 1 er 1 er paginate yapayım dedim.Ama surekli 1.ci datayı veriyor..

{
    "meta": {
        "success": true,
        "status": 200
    },
    "resource": {
        "users": {
            "current_page": 1,
            "data": [
                {
                    "id": 7,
                    "username": "toraman.daghan",
                    "name": "Ümran",
                    "surname": "Durak",
                    "gender": "male",
                    "birthday": "2007-04-29",
                    "password": "$2y$10$sCn.wExA2ULKYCQXzl5DEesT0LByhJRocilbBujPEWIFNXjQNomVe",
                    "email": "[email protected]",
                    "status": "0",
                    "is_deleted": "0",
                    "userCode": 1546169273,
                    "token": null,
                    "created_at": "2018-12-30 11:27:53",
                    "updated_at": "2018-12-30 11:27:53"
                }
            ],
            "first_page_url": "/?page=1",
            "from": 1,
            "last_page": 7,
            "last_page_url": "/?page=7",
            "next_page_url": "/?page=2",
            "path": "/",
            "per_page": 1,
            "prev_page_url": null,
            "to": 1,
            "total": 7
        }
    }
}

acaba dedim.withPath yalnış ondan mı yapıyor dedim.

User::orderBy('id','DESC')->paginate(1)->withPath('http://localhost/company/mobi/main/users')->toArray();

böyle kullandım ama yine olmadı.nedir sorun sence?

Son düzenleyen deathisonitsway (30.12.2018 13:48:13)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#8 30.12.2018 23:21:25

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel outside create ve paginate sorunu.

Bu şekilde önce sayfa değişkeninin ne olacağını belirlemeniz lazım. Bu işlem Laravel'de PaginationServiceProvider içerisinde yapıldığı için doğal olarak sizin sistemde yok:

$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();

\Illuminate\Pagination\Paginator::currentPageResolver(function () use ($request) {
    return $request->query->get('page');
});

Paginator::currentPageResolver() yöntemini Capsule::bootEloquent() yönteminden hemen sonra ekleyebilirsiniz.

Çevrimdışı

#9 31.12.2018 07:29:01

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

mgsmus yazdı:

Bu şekilde önce sayfa değişkeninin ne olacağını belirlemeniz lazım. Bu işlem Laravel'de PaginationServiceProvider içerisinde yapıldığı için doğal olarak sizin sistemde yok:

$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();

\Illuminate\Pagination\Paginator::currentPageResolver(function () use ($request) {
    return $request->query->get('page');
});

Paginator::currentPageResolver() yöntemini Capsule::bootEloquent() yönteminden hemen sonra ekleyebilirsiniz.

wuww..!!! harikasın sen mgmsmus.Tesekkurler.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#10 31.12.2018 14:15:20

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel outside create ve paginate sorunu.

Herhangi bir diziden Laravel Paginator nesnesi oluşturmak için böyle bir fonksiyon yazmıştım, bir uygulamamızda kullanmıştık:

function paginateArray($items, $perPage = 15, $count = null, $page = null, $options = [])
{
    return new \Illuminate\Pagination\LengthAwarePaginator(
        collect($items),
        $count ?? $items->count(),
        $perPage,
        $page ?: (\Illuminate\Pagination\Paginator::resolveCurrentPage() ?: 1),
        $options
    );
}

Şu şekilde kullanabilirsiniz:

$array =  ['falan', 'filan', 'mesela'];

$array = paginateArray($array, 20);

Çevrimdışı

#11 02.01.2019 10:10:50

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

Sineld hocam ekledim fonksiyonunu bende helpera,lazım olabilir ilerde smile


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#12 02.01.2019 10:39:57

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Çevrimdışı

#13 02.01.2019 10:46:45

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel outside create ve paginate sorunu.

$count verilmeyip $item olarak Countable değil de düz dizi verildiğinde $items->count() kısmında hata verecekmiş gibi duruyor.

Çevrimdışı

#14 02.01.2019 11:14:26

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

mgsmus yazdı:

$count verilmeyip $item olarak Countable değil de düz dizi verildiğinde $items->count() kısmında hata verecekmiş gibi duruyor.

Koskoca sineld ustanın sen şimdi açığını mı buldun yani smile ayıp ayıp smile


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#15 02.01.2019 11:19:49

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel outside create ve paginate sorunu.

Önemli değil gözden kaçmıştır. Asıl önemli olan görür görmez "Şimdi PHP 7.3.0 olacaktı, basacaktın is_countable(), aaah ah" demem big_smile

Çevrimdışı

#16 02.01.2019 11:48:19

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Laravel outside create ve paginate sorunu.

o değilde böyle güzel helperlarınız varsa paylaşsanız ya mgsmus sende çok vardır ha smile ben laravelin support içindeki arr sınıfını aktif kullanıyorum mesela.böyle kullanabileceğim şeyleri direkt forklarım da.sizde maşallah gizli servis adamları gibisiniz.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#17 03.01.2019 08:05:28

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel outside create ve paginate sorunu.

deathisonitsway yazdı:
mgsmus yazdı:

$count verilmeyip $item olarak Countable değil de düz dizi verildiğinde $items->count() kısmında hata verecekmiş gibi duruyor.

Koskoca sineld ustanın sen şimdi açığını mı buldun yani smile ayıp ayıp smile

Allah senin iyiliğini versin lol

Çevrimdışı

Forum alt kısmı