Codeigniter Image upload - codeigniter

where can i find tutorial where the concept is uploading image and it save the image path in database with the user id and with delete function. thanks!
here are the concept form
+--------+ +------------+
| avatar | | | Browse
+--------+ +------------+
+----------+
| | name
+----------+
+----------+
| | age
+----------+
+----------+
| | address
+----------+
+----------+
| Submit |
+----------+

Here is one that does the upload, the database and delete should be easy from there
http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-file-uploading-and-image-manipulation/
Also review the codeigniter pages for this subject
Also of note
Codeigniter: Image Upload
EDIT----------------------------------------
I am assuming you are listing the images in a table to edit or delete them. I could be way off base with what you are doing. I am also assuming while you use the "user id" you also assign an id to the image itself.
For deletions I do something like this
$this->table->set_heading('Date', 'Title', 'Delete', 'Update');
foreach($records as $row){
$row->title = ucwords($row->title);
$this->table->add_row(
$row->date,
anchor("main/blog_view/$row->id", $row->title),
anchor("main/delete/$row->id", $row->id, array('onClick' => "return confirm('Are you sure you want to delete?')")),
anchor("main/fill_form/$row->id", $row->id)
);
}
$table = $this->table->generate();
See the second anchor? It picks up the ID of the image in the db and points to a controller function:
function delete()
{
$this->is_logged_in();
$this->post_model->delete_row();
$this->maint();
}
the Model
function delete_row()
{
$this->db->where('id', $this->uri->segment(3));
$this->db->delete('posts');
}

Related

Return selective rows Laravel Eloquent

I want to filter product using their attributes using below query
return Product::with('attributes')
->whereHas('attributes', function ($query) use ($attribute_id_array,$attribute_value_array){
for($k=0;$k<count($attribute_id_array);$k++)
{
$attr_id=$attribute_id_array[$k];
$attr_val=$attribute_value_array[$k];
$query->where(function($q) use ($attr_id, $attr_val) {
$q->where('attribute_id', $attr_id)->where('value', $attr_val);
});
}
})->paginate(10);
I want to check if attributes of a product exist then filter it using the loop to filter out products that are in attributes_value & attributes_id array which does not match but presently this query is not filtering through attributes.
Here are the structure of tables and relations
Product Table :
|id | Title | Price|
-------------------------
|1 | Title 1 | 5000|
|2 | Product 2 | 7000|
and the other is
product_attribute table:
|id | product_id | attribute_id | attribute_name | value|
---------------------------------------------------------
|1 | 1 | 5 | Color | Red |
|2 | 1 | 6 | Size | XL |
|3 | 2 | 5 | Color | Green|
Product and Product attribute is related with following relation (In the product model):
public function attributes()
{
return $this->hasMany(ProductsAttribute::class, 'product_id ');
}
I believe you need to validate each attribute and value combinations to be present for the resultant products, so you can put your whereHas clause inside the loop as
$products = Product::with('attributes');
for($k=0; $k<count($attribute_id_array); $k++)
{
$attr_id=$attribute_id_array[$k];
$attr_val=$attribute_value_array[$k];
$products->whereHas('attributes', function ($query) use ($attr_id,$attr_val){
$query->where('attribute_id', $attr_id)->where('value', $attr_val);
});
}
$products = $products->paginate(10);

WhereIN data for calculations for displaying results

I am trying to work out the best practice to calculate Avg Attendance.
I would like to show this on the Member View (html part is no issue)
I have the following 3 databases
Members DB
|id|first|last|..........
|1 |.....................
|2 |.....................
Rolls DB
|id|roll_id|member_id|status|
|1 |1 |1 |P |
|2 |1 |2 |V |
|3 |2 |1 |A |
|4 |2 |2 |C |
Rollmappings DB
|id|roll_date |roll_year|
|1 |2019-03-01|2019 |
|2 |2019-03-02|2019 |
I have the following in my Member Model
public function roll()
{
return $this->hasMany('App\Roll');
}
I have the following in my Roll Model
public function rollmapping()
{
return $this->hasOne('App\Rollmapping', 'id','roll_id');
}
I would like to count all records which does not equal "A"
So in the code blocks above Member 1 will needs to show me 50% attendance, and member 2 will show me 100% attendance.
I would need to have something in place which will auto roll over when we move into 2020
I do Have Carbon Date installed with the app as well
I got stuck on the link on pulling the year_roll into the select for the Roll and to count I can use:
$rollyear = Rollmapping::lastest()->value('roll_year');
$totalweeks = DB::table('rollmappings')
->where('roll_year', '=', $rollyear)
->get()
->count();
But I am stuck on on pulling the correct records from the roll using the roll_id as I only want the roll_id which have a year date of the current year.
Thanks
If I understand you're question correctly then you should be able to get what you need using whereHas
$count = Roll::whereHas('rollmapping', function ($query) {
$query->whereYear('roll_date', now()->year);
})->count();
If you would also like to exclude all the rolls where the status does not equal A then you would have something like:
$count = Roll::whereHas('rollmapping', function ($query) {
$query->whereYear('roll_date', now()->year);
})
->where('status', '!=', 'A')
->count();

pivot table with multiple columns in Eloquent

Here's my scenario:
I have a Event model and a Stage model, a event can have multiple stages and a stage could be assigned to multiple events. So Many-to-many. The thing is, a stage has a sort_order, and that sort_order could be different in each event. That's why I added the sort_order into the pivot table instead in, for example, the stage table.
table: events_stages
| event_id | stage_id | sort_order |
------------------------------------
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 5 | 3 |
The thing is when I'm going to relate the Stage with the events its in,
I'm doing something like in the StageController:
sending a post with events: [1,2,3] and sort_order: [1,1,2]
$relatedEvents = array();
foreach ($request->events as $key => $event)
{
$relatedEvents[] = array(
'event_id' => $relatedEventId,
'sort_order' => $request->sort_order[$key]
);
}
$stage->events()->sync(
$relatedEvents
);
but rely simply in the order of the post, doesn't seem like a really good idea.
Does anyone have a nicer solution?
Thanks!
Sometimes is better to create another model (and use it as a pivot) rather than use pivot table itself. You have more control. I'm not sure what exactly you want to achieve.

Laravel 4.2 HasMany Relationship using Like

I'm wondering if its possible to set the operator when using a HasMany relationship in Laravel 4.2.
I'm working with a users table and an email log table. The log table has a userID stored in serialised format (as there may be more than one userID stored within the log).
Users table
+---------+
| user_ID |
+---------+
| 1 |
| 2 |
+---------+
emailLog Table
+----+--------------------+
| ID | user_ID |
+----+--------------------+
| 1 | a:1:{i:0;s:1:"2";} |
| 2 | a:1:{i:0;s:1:"1";} |
+----+--------------------+
Am I able to use a hasMany relation with a 'Like' operator rather than an equals operator to return the correct email log ID? Would the statement be written something like the below?
return $this->hasMany('emailLog', 'user_ID', '%user_ID%', 'LIKE');
The proper way to return join table with a where clause would be:
return $this->hasMany('emailLog','user_id')->where('user_id', 'LIKE', '%user_id%');
I found a way to do something similar
class User extends Model
{
public function emailLogs()
{
// old code
// return $this->hasMany(EmailLogs::class, 'user_ID');
// Replace HasMany by like query
return EmailLogs::where('user_ID', 'LIKE', "%{$this->user_ID}%");
}
}

Laravel Categories Map Relationship

I have the following three tables but I don't know how to build a relation between the category and the other data type, in this case 'Page':
posts:
post_id | title | slug
1 | Test | test
2 | Another test | another test
catgory_map:
id | category_id | referrer_id | category_map_type
1 | 2 | 1 | Post
2 | 3 | 2 | Post
3 | 2 | 9 | Page
category
id | name
1 | Laravel
2 | Zend2
3 | Phalcon
So whenever I read a Category I like to be able to do something like this
foreach($category->destinations) ...
I have tried until now with hasManyThrough but it didn't work.
What you have is a many-to-many relation with some additional filtering on the relationship (for the category_map_type). Try this:
Post model
public function categories(){
return $this->belongsToMany('Category', 'category_map', 'referrer_id')
->where('category_map_type', 'Post');
}
Category model
public function posts(){
return $this->belongsToMany('Post', 'category_map', 'category_id', 'referrer_id')
->where('category_map_type', 'Post');
}
Usage
$category = Category::find(1);
foreach($category->posts as $post){
// ...
}
(And the same goes for Post)
You might also want to look into polymorphic many-to-many relations

Resources