32 thảo luận trên “Bài 7 : Sử dụng Eloquent trong Laravel 5”

  • Cho mình hỏi là trong khi đang thao tác trong tinker. Làm cách nào để trở về thao tác với php artisan vậy? Cụ thể là trong ví dụ này, mình quên chưa tạo bản articles trong DB nên khi đến phần thêm dữ liệu vào bảng mình muốn thoát ra để tạo bảng articles rồi mới thao tác tiếp. Mong bạn giúp đỡ! Cảm ơn bạn!

    • :)) mình vừa gõ bừa exit nó out luôn rồi @@ nhưng nếu có cách khác thì mình vẫn mong được chỉ giáo 😀

      • Hảo Hảo Mì

        Tuyệt vời ^^

  • Mình exit ra ngoài rồi tạo bảng mà báo lỗi [RuntimeException] Too many arguments . mình đã chạy fresh và cả config:clear rồi mà vẫn vậy? Giúp mình với! Cảm ơn bạn!

  • bạn cho mình hỏi mình tạo table trên database bằng php myadmin hoắc sql server nhưng sau đó mình muốn add nó vào laravel,như đã được tạo bởi migration để có thể sử dụng eloquent có được ko vậy,mình thử tạo một table trên phpmyadmin ,nhưng mà thử tạo một model có tên trùng tables đó nhưng khi thử add thêm dữ liệu thì báo lỗi

    • bạn add dữ liệu như thế nào ? Post code lên mình xem thử

      • truong trang

        mình chưa code ấy.mình có bài tập lớn về thiết kế web bằng laravel để quản lý hội nhạc sĩ.mjnhf định tạo ra csdl trước cho cả nhóm làm mẫu.nhưng thao tác với nó trên laravel ko dùng eloquent haymigration thì hơi phí

        • Bản chất thì Eloquent chỉ là 1 tool để bạn có thể thêm, xóa, sửa dữ liệu trong database như là mysql thay vì phải vào trực tiếp bên trong phpmyadmin để chỉnh. Nếu như bạn đã có sẵn cơ sở dữ liệu trong phpmyadmin rồi, thì bạn cứ việc kết nối tới và sử dụng. Bạn để ý ở trên, mình có file model Articles.php, file này chính là đại diện cho bảng articles trong databse. Giờ giả sử như trong trường hợp của bạn, bạn đã có database là bảng baiviet trong database, thì bạn chỉ việc tạo một file Baiviet.php có nội dung đại loại như sau :

          < ?php namespace App; use Illuminate\Database\Eloquent\Model; class Baiviet extends Model { // } là bạn đã có thể thao tác thêm, xóa , sửa trên bảng đó rồi, bạn coi tiếp bài này sẽ thấy rõ hơn mình đã sử dụng file model Articles.php như thế nào nhé : http://kungfuphp.com/laravel-framework-5/mo-hinh-mvc-trong-laravel-5.html

          • mình có thử làm như bạn mình tạo table baiviet trong database là tranglata xong mình thử dùng php arstian tinker để tạo xem có thêm dữ liệu không thì nó lại bảo là mình insert dữ liệu vào bảng baiviets có thêm chữ s ở sau nên ko tìm thấy,mình thử mấy lần khác thì đều như thế,bạn biết lỗi ko :3
            Illuminate\Database\QueryException with message ‘SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘tranglata.baiviets’ doesn’t exist (SQL: insert into baiviets
            (
            maso, tenbaiviet, updated_at, created_at`) values (2, 3, 2015-04-01 13:47:46, 2015-04-01 13:47:46))’
            >>>

        • mình có thử làm như bạn mình tạo table baiviet trong database là tranglata xong mình thử dùng php arstian tinker để tạo xem có thêm dữ liệu không thì nó lại bảo là mình insert dữ liệu vào bảng baiviets có thêm chữ s ở sau nên ko tìm thấy,mình thử mấy lần khác thì đều như thế,bạn biết lỗi ko :3
          Illuminate\Database\QueryException with message ‘SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘tranglata.baiviets’ doesn’t exist (SQL: insert into baiviets
          (maso, tenbaiviet, updated_at, created_at`) values (2, 3, 2015-04-01 13:47:46, 2015-04-01 13:47:46))’
          >>>

          Bạn paste câu lệnh SQL mà bạn dùng để insert mình xem thử

          • câu lệnh thì như trên :insert into baiviets
            (maso, tenbaiviet, updated_at, created_at`) values (2, 3, 2015-04-01 13:47:46, 2015-04-01 13:47:46))’
            nhưng mình dùng php artisan tinker add theo lệnh giống như trên của bạn

        • theo lỗi nó thông báo ra thì là nó ko hiểu bảng “baiviets” có s của bạn. Trong khi trong db lại là bảng “baiviet”, hmm, giờ chỉ còn cách là thử đổi tên “baiviet” thành “baiviets” trong db xem sao :p

          • Phat Quach

            bạn phải định nghĩa biến $table trong model nếu muốn bỏ chữ s đi ví dụ trường hợp của bạn thì thêm dòng $table = ‘baiviet’ vào trong model, cũng như primary key mặc định của nó là ” id ” nên nếu muốn truy cập bằng tên khác thì thêm $primaryKey = ‘abc_id’

  • Bạn cho mình hỏi chỉnh lại giờ cho đúng gmt+7 của VietNam ở 2 trường created_at và updated_at ở đâu nhỉ?

    • bạn vào đây : laravel-5/config/app.php, tìm dòng ‘timezone’ => ‘UTC’, và set lại theo đúng ý bạn nhé

  • Kungfu PHP cho mình hỏi:
    Nếu mình tạo được table : articles và users, nếu mình artisan:rollback thì nó sẽ xóa cái nào ?
    Nếu mình đặt cụ thể để rollback table cần rollback nó có được hôm ?

    Ví dụ như: mình tạo table: users trước, rồi tạo tiếp cái articles, dĩ nhiên rollback nó sẽ xóa articles, nếu mình muốn rollback users mà k phải articles thì sao ^^

    • php artisan migrate:rollback : rollback migration cuối cùng
      php artisan migrate:reset : rollback tất cả migration đã được tạo
      Ngoài ra Laravel hiện vẫn chưa cho rollback chỉ định từng table, nhưng có 1 cách làm thủ công đó là bạn vào trong database và sửa trực tiếp nhé

  • Hanzzy

    Các bác cho em hỏi chút tại sao em dùng cái findOrFail thì nó báo là Method not found in model

  • cho hỏi làm cách này có lợi gì hơn, t thấy vào csdl làm mấy việc này nhanh gọn hơn

  • chauanthuan

    Anh nên thêm làm thế nào để exit tinker console luôn ạ, để mọi người trong quá trình thao tác theo có thể xuyên suốt các bài với nhau ạ. Chúc anh luôn mạnh khỏe để viết thêm nhiu bài viết thật hay nữa ạ.

  • cho mình hỏi về relation một chút:
    mình có 1 bảng ngôn ngữ: languages(id, name, …), 1 bảng bài viết posts(id, image, status …) và bảng relation giữa chúng là post_lang(post_id, lang_id, post_title, post_slug, content….)
    bây giờ mình muốn lấy tất cả bài viết query từ bảng posts: Post::with(‘langs’)….. và sắp xếp theo post_title trong bảng post_lang (bảng pivot) thì viết ntn a. thank all

  • Nguyễn Thanh Toàn

    Ad cho em hỏi tý được không ạ? Em dùng hàm Auth::attempt($user) để kiểm tra đăng nhập. Em tin chắc rằng e đã nhập đúng Username và Password nhưng hàm attempt luôn trả về sai. Ad đã từng gặp trường hợp này chưa ạ? Giúp e với, chúc page thành công!

  • em bị làm theo hương dẫn nhưng khi gõ lệnh save() thì thông báo lỗi và chưa biết khắc phục thế nào
    Illuminate\Database\QueryException with message ‘SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘author’ in ‘field list’ (SQL: insert into ar
    ticles
    (name, author, updated_at, created_at) values (Hieu, Bla bla Bla, 2016-03-04 14:32:26, 2016-03-04 14:32:26))’

  • thanh

    mình dùng migration thì thấy có tác động tới DB nhưng sao xài cái này hoặc use DB; lại ko đc ?

    PDOException in Connector.php line 55:
    SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES)
    in Connector.php line 55
    at PDO->__construct(‘mysql:host=127.0.0.1;port=3306;dbname=dich_vu_an_uong’, ‘root’, ‘11111’, array(‘0’, ‘2’, ‘0’, false, false)) in Connector.php line 55
    p/s : trên mạng thấy toàn chỉ cách sửa password của ‘root’ trong khi ở đây mình nhập đúng hết mà, dùng migration nó cũng tạo table trong DB bình thường mà ?

  • dương

    a ơi e gõ tới bước $articles= new App\Articles rồi thì nó trả về =>App\Articles{#663} thì là lỗi gì vậy a?

  • Vuong

    Add giúp mình cái này. Mình có bảng tochuctindung: matctd, tentctd, diachitctd. Minh Delete thi nó báo unknown tochuctindung.id.
    Lỗi nằm ở đâu vậy add? cách khắc phục add giúp mjh. minh mới tìm hiểu laravel. Cảm on add

    • Bạn thêm 1 cột id, thuộc tính tự tăng vào bảng của bạn nữa nhé

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận bằng Facebook

bình luận